user-0 提问: 关于指针的超新手问题

回复:
user: user-0
content: 引用 16 楼 5250 的回复:[quote=引用 15 楼 No_Found707 的回复:][quote=引用 14 楼 5250 的回复:][quote=引用 13 楼 No_Found707 的回复:][quote=引用 12 楼 5250 的回复:]printf_one(i);  这个函数哪儿来的？  是从文库抄的答案，我没太看懂……查了一下大概意思是根据i打印节点，是这个该删掉吗T T[/quote]  首先 这不是诸如printf ,scanf的库函数，其次也没看到你自定义这个函数，所以你编译的话应该会报错。[/quote]  我去查了一下原文这个函数的定义作用都没有提及，干脆把他直接删除再试试编译结果报错还是一样的OTZ看起来大概是没什么作用可有可无的一句话吗  是这个样子，前辈有没有什么解决经验教教我，谢谢！[/quote]  去找找报错的函数 和我刚才指出的问题一样 没有任何的函数定义，你可以删除 也可以自定义[/quote]   谢谢！！完美解决了！！！！！太感谢了！

user: user-1
content: 引用 15 楼 No_Found707 的回复:[quote=引用 14 楼 5250 的回复:][quote=引用 13 楼 No_Found707 的回复:][quote=引用 12 楼 5250 的回复:]printf_one(i);  这个函数哪儿来的？  是从文库抄的答案，我没太看懂……查了一下大概意思是根据i打印节点，是这个该删掉吗T T[/quote]  首先 这不是诸如printf ,scanf的库函数，其次也没看到你自定义这个函数，所以你编译的话应该会报错。[/quote]  我去查了一下原文这个函数的定义作用都没有提及，干脆把他直接删除再试试编译结果报错还是一样的OTZ看起来大概是没什么作用可有可无的一句话吗  是这个样子，前辈有没有什么解决经验教教我，谢谢！[/quote]  去找找报错的函数 和我刚才指出的问题一样 没有任何的函数定义，你可以删除 也可以自定义

user: user-0
content: 引用 14 楼 5250 的回复:[quote=引用 13 楼 No_Found707 的回复:][quote=引用 12 楼 5250 的回复:]printf_one(i);  这个函数哪儿来的？  是从文库抄的答案，我没太看懂……查了一下大概意思是根据i打印节点，是这个该删掉吗T T[/quote]  首先 这不是诸如printf ,scanf的库函数，其次也没看到你自定义这个函数，所以你编译的话应该会报错。[/quote]  我去查了一下原文这个函数的定义作用都没有提及，干脆把他直接删除再试试编译结果报错还是一样的OTZ看起来大概是没什么作用可有可无的一句话吗  是这个样子，前辈有没有什么解决经验教教我，谢谢！

user: user-1
content: 引用 13 楼 No_Found707 的回复:[quote=引用 12 楼 5250 的回复:]printf_one(i);  这个函数哪儿来的？  是从文库抄的答案，我没太看懂……查了一下大概意思是根据i打印节点，是这个该删掉吗T T[/quote]  首先 这不是诸如printf ,scanf的库函数，其次也没看到你自定义这个函数，所以你编译的话应该会报错。

user: user-0
content: 引用 12 楼 5250 的回复:printf_one(i);  这个函数哪儿来的？  是从文库抄的答案，我没太看懂……查了一下大概意思是根据i打印节点，是这个该删掉吗T T

user: user-1
content: printf_one(i);  这个函数哪儿来的？

user: user-0
content: ……诶，在我努力思考的时候突然热闹起来了吗，总而言之辛苦了

user: user-0
content: 谢谢前辈们帮忙T T真的非常轻松解决问题了，但是报错从只有那个N变成了一大堆。  C:\Users\asus\AppData\Local\Temp\ccOoAIiO.o	杂志订阅系统.c:(.text+0x5d8): undefined reference to `printf_n' ↑大概是这个样子，有非常多。我去查了一下大概是链接静态库之类的出问题了吗？我没有太看懂，也没有找到解决方案……  还有一条  [Error] ld returned 1 exit status  的红色报错  非常困惑……明明已经只剩下N没有解决，突然多出来一屏幕的错感觉非常的困惑。使用的软件是DEV C++，我有看到其他软件的解决方案，看起来大概不通用。请求前辈们进行二度援助，拜托了OTZ   #include<stdio.h>   #include <stdlib.h>  #define N 100   struct magazine {  	char name[20]; 	char sex[6]; 	char addr[20]; 	char phone_number[20]; 	float unit_price; 	int amount; 	char time_limit[20]; }mag[N];   void input(int i){  	printf("请输入：姓名 性别 地址 电话号码 单价 数量 日期期限"); 	scanf("%s %s %s %s %f %d %s", mag[i].name,mag[i].sex,mag[i].addr,mag[i].phone_number,&mag[i].unit_price,&mag[i].amount,mag[i].time_limit); }  void save(int n){ 	FILE *fp; 	int i; 	if((fp=fopen("record.txt","w"))==0){ 		printf("无法找到信息"); 		exit(0);  	} 	for(i=0;i<n;i++){ 			fprintf(fp,"%5s %5d %10s %11s %3f %d %10s",mag[i].name,mag[i].sex,mag[i].phone_number,mag[i].unit_price,mag[i].time_limit); 	} 	fcolse(fp); }  void search_dele(){ FILE *fp; struct mag; char date[20]; int t,i,sum=0,j=0; t=load_record(); system("cls"); printf("请输入日期[ ]\n"); scanf("%s",date); printf("\n"); if((fp=fopen("record.txt","w"))==0){ 	printf("无法打开\n"); 	exit(0); } system("cls"); printf("\n"); for(i=0;i<t;i++){ 	if(strcmp(mag[i].time_limit,date)>0){ 		sum++; 		printf("\n"); 		printf_one(i);  		fprintf(fp,"%s %s %s %s %d %f %s\n",mag[j].name,mag[j].sex,mag[j].phone_number,mag[j].unit_price,mag[j].time_limit); 		j++; 	} } fclose(fp); if (sum==0){ 	printf("很遗憾无法找到您搜索的信息。\n"); } printf("任意键返回\n"); getch(); menu(); }    void add(){ 	int t,i,m; 	system("cls"); 	t=load_record(); 	printf("您需要添加多少用户的信息？\n"); 	getch(); 	printf("输入号码：[]\n"); 	scanf("%d",&m); 	for(i=0;i<m;i++) 	{ 		printf("\n添加%d位用户信息\n",i+1); 		input(t+1); 	} 	save(t+m); 	system("cls"); 	menu(); }        void statistc(){ 	int i,t,allamount=0; 	float sum=0.0,allmoney=0.0; 	t=load_record(); 	system("cls"); 	printf("订阅者的数量%d\n",t); 	getch(); 	system("cls"); 	puts("本期订户信息表\n"); 	printf_n(t); 	for(i=0;i<t;i++){ 		allamount+=mag[i].amount; 		allmoney+=mag[i].amount*mag[i].unit_price; 	}  	printf("合计：\n"); 	printf("总数量=%d \n总金额=%f\n,allamount,allmoney"); 	getch(); 	printf("任意键返回\n"); 	menu();  }    int load_record(){ 	FILE *fp; 	int i; 	if((fp=fopen("record.txt","r"))==NULL){ 		printf("无法找到信息\n"); 		getch(); 		exit(0); 	} 	for(i=0;!feof(fp);i++){ 		fscanf(fp,"%5s %5d %10s %11s %3f %d %10s",mag[i].name,mag[i].sex,mag[i].phone_number,mag[i].unit_price,mag[i].time_limit); 	} 	fclose(fp); 	return(i); }   void MENU(){ 	int w,n; 	do{ 		puts("\n"); 		puts("欢迎来到杂志订阅系统\n"); 		puts("MENU\n"); 		puts("1:add_new_subscriber\n"); 		puts("2:search_dele\n"); 		puts("3:statistic\n"); 		puts("4:exit\n"); 		puts("——————\n"); 		printf("请选择数字()1-4:[]\n"); 		scanf("%d",&n); 		if(n<1||n>4) 		{ 			w=1; 			gather(); 		} 		else w=0; 	}	while(w==1); 		switch(n){ 			case 1:add();break; 			case 2:search_dele();break; 			case 3:statistic();break; 			case 4:exit(0); 		} }     main(){ 	MENU(); }     这里是完整代码！谢谢！

user: user-2
content: #define  N 1000  //给N定义一个值

user: user-3
content: 引用 6 楼 Army_Adviser_ 的回复:[quote=引用 5 楼 自信男孩 的回复：][quote=引用 4 楼 Army_Adviser_ 的回复:][quote=引用 3 楼 自信男孩 的回复：][quote=引用 2 楼 Army_Adviser_ 的回复:]struct magazine{ char name[20]; char sex[6]; char addr[20]; char phone_number[20]; float unit_price; int amount; char time_limit[20]; }mag[N];//问题在这里！WARNING！    <====这个是别名呀 不是变量  建议改成 mag  你要使用这个结构体可以使用以下2个方式定义变量： struct magazine *str1=NULL;  或者  mag[N] *str1=NULL; 这是变量不是别名好不好，如果是别名，怎么看到typedef?[/quote]这样写也可以呀……不信你用最后面的名字定一下结构体[/quote] 试了，提示错误：   }mag[N];//问题在这里！WARNING！    <====这个是别名呀 不是变量  建议改成 mag       ^ abb1.cpp:14:1: error: ‘mag’ does not name a type  mag[N] *str1=NULL;  ^~~ <内置>: recipe for target 'abb1' failed make: *** [abb1] Error 1   代码如下：  #include <stdio.h>  struct magazine{     char name[20];     char sex[6];     char addr[20];     char phone_number[20];     float unit_price;     int amount;     char time_limit[20]; }mag[N];//问题在这里！WARNING！    <====这个是别名呀 不是变量  建议改成 mag //你要使用这个结构体可以使用以下2个方式定义变量： struct magazine *str1=NULL;  //或者 mag[N] *str1=NULL;  int main(void) {     return 0; }  建议了解一下typedef[/quote]emmmm.你试过吗？[/quote]  看完我上面的回复再问这个“你试过了吗？”问题～

user: user-3
content: 引用 4 楼 Army_Adviser_ 的回复:[quote=引用 3 楼 自信男孩 的回复：][quote=引用 2 楼 Army_Adviser_ 的回复:]struct magazine{ char name[20]; char sex[6]; char addr[20]; char phone_number[20]; float unit_price; int amount; char time_limit[20]; }mag[N];//问题在这里！WARNING！    <====这个是别名呀 不是变量  建议改成 mag  你要使用这个结构体可以使用以下2个方式定义变量： struct magazine *str1=NULL;  或者  mag[N] *str1=NULL; 这是变量不是别名好不好，如果是别名，怎么看到typedef?[/quote]这样写也可以呀……不信你用最后面的名字定一下结构体[/quote] 试了，提示错误：   }mag[N];//问题在这里！WARNING！    <====这个是别名呀 不是变量  建议改成 mag       ^ abb1.cpp:14:1: error: ‘mag’ does not name a type  mag[N] *str1=NULL;  ^~~ <内置>: recipe for target 'abb1' failed make: *** [abb1] Error 1   代码如下：  #include <stdio.h>  struct magazine{     char name[20];     char sex[6];     char addr[20];     char phone_number[20];     float unit_price;     int amount;     char time_limit[20]; }mag[N];//问题在这里！WARNING！    <====这个是别名呀 不是变量  建议改成 mag //你要使用这个结构体可以使用以下2个方式定义变量： struct magazine *str1=NULL;  //或者 mag[N] *str1=NULL;  int main(void) {     return 0; }  建议了解一下typedef

user: user-3
content: 引用 2 楼 Army_Adviser_ 的回复:struct magazine{ char name[20]; char sex[6]; char addr[20]; char phone_number[20]; float unit_price; int amount; char time_limit[20]; }mag[N];//问题在这里！WARNING！    <====这个是别名呀 不是变量  建议改成 mag  你要使用这个结构体可以使用以下2个方式定义变量： struct magazine *str1=NULL;  或者  mag[N] *str1=NULL; 这是变量不是别名好不好，如果是别名，怎么看到typedef?

user: user-3
content: 这是数组长度，需要确定长度，如果要做成动态申请，那么这个N直接改成0，或者直接定义成*mag;.如果要做成静态的，那么就给予一个固定值。  静态的和动态的各有优缺点。