user-0 提问: 跪求大佬帮我看下哪里有错

回复:
user: user-0
content: 引用 1 楼 user-2 的回复：接分   #define MAX_LEN 256 int my_strtoint(char * mystr) { 	char temp_str[MAX_LEN]={0}; 	int i=0,j=0; 	while(mystr[i]!='\0'&&i<MAX_LEN) 	{ 		if(isdigit(mystr[i])) 		{ 			temp_str[j]=mystr[i]; 			j++;  		}        i++; 	} 	return atoi(temp_str); }   int main(){ 	 char strline[MAX_LEN]={0}; 	 FILE *fpt; 	if((fpt=fopen("A1.txt","a+"))==NULL) 	{ 		printf("Can't open file.\n"); 		return -1; 	}   	int result_int=0; 	int line_count=0; 	while(fgets(strline,MAX_LEN,fpt)!=NULL) 	{ 	   line_count=my_strtoint(strline); 	   result_int+=line_count;        printf("read line str:%s   =>:%d\r\n",strline,line_count); 	   if(feof(fpt)||ferror(fpt))break; 	}  	 fseek(fpt, SEEK_END, 0); 	 printf("total is:%d",result_int); 	 fprintf(fpt,"\r%d",result_int); 	 getchar();      return 0;  }  谢谢谢谢！

user: user-0
content: 引用 2 楼 自信男孩 的回复：[quote=引用 1 楼 user-2 的回复:] 接分   #define MAX_LEN 256 int my_strtoint(char * mystr) { 	char temp_str[MAX_LEN]={0}; 	int i=0,j=0; 	while(mystr[i]!='\0'&&i<MAX_LEN) 	{ 		if(isdigit(mystr[i])) 		{ 			temp_str[j]=mystr[i]; 			j++;  		}        i++; 	} 	return atoi(temp_str); }   int main(){ 	 char strline[MAX_LEN]={0}; 	 FILE *fpt; 	if((fpt=fopen("A1.txt","a+"))==NULL) 	{ 		printf("Can't open file.\n"); 		return -1; 	}   	int result_int=0; 	int line_count=0; 	while(fgets(strline,MAX_LEN,fpt)!=NULL) 	{ 	   line_count=my_strtoint(strline); 	   result_int+=line_count;        printf("read line str:%s   =>:%d\r\n",strline,line_count); 	   if(feof(fpt)||ferror(fpt))break; 	}  	 fseek(fpt, SEEK_END, 0); 	 printf("total is:%d",result_int); 	 fprintf(fpt,"\r%d",result_int); 	 getchar();      return 0;  }   以a+的模式打开文件，是不是前面的字符串就读取不到了？  是不是应该以"r+"的模式打开文件[/quote]谢谢谢谢！

user: user-0
content: 引用 3 楼 自信男孩 的回复：#include <stdio.h> #include <string.h> #include <ctype.h>  int convert_number(const char *str);  int main() {     FILE *fpt;     int count=0,i,j,len,x;     char ch[50];      //if((fpt=fopen("A1.txt","r"))==NULL)     if((fpt=fopen("A1.txt","r+"))==NULL)     {         printf("Can't open file.\n");         return -1;     }     //ch[50]=fgetc(fpt);     while (fgets(ch, 50, fpt)) {         count += convert_number(ch);     }      snprintf(ch, 50, "%d", count);      fputs(ch, fpt);     /*     int a[len];     char *p = ch;     for(i=0;i<len;i++)     {      x=*(p+i);      if (isdigit(x))      {          a[j]=x;          printf("%d",x);          j++;          count=count+x;      }     }     */      fclose(fpt);     printf("这些整数和为%d\n",count);     return 0; }  int convert_number(const char *str) {     const char *tmp = str;     int num = 0;      while (*tmp) {         if (isdigit(*tmp))             num = num * 10 + (*tmp - '0');         tmp++;     }      return num; } 供参考～，可以用你老师的.txt文件测试一下，有问题再提出来。谢谢谢谢！

user: user-1
content: #include <stdio.h> #include <string.h> #include <ctype.h>  int convert_number(const char *str);  int main() {     FILE *fpt;     int count=0,i,j,len,x;     char ch[50];      //if((fpt=fopen("A1.txt","r"))==NULL)     if((fpt=fopen("A1.txt","r+"))==NULL)     {         printf("Can't open file.\n");         return -1;     }     //ch[50]=fgetc(fpt);     while (fgets(ch, 50, fpt)) {         count += convert_number(ch);     }      snprintf(ch, 50, "%d", count);      fputs(ch, fpt);     /*     int a[len];     char *p = ch;     for(i=0;i<len;i++)     {      x=*(p+i);      if (isdigit(x))      {          a[j]=x;          printf("%d",x);          j++;          count=count+x;      }     }     */      fclose(fpt);     printf("这些整数和为%d\n",count);     return 0; }  int convert_number(const char *str) {     const char *tmp = str;     int num = 0;      while (*tmp) {         if (isdigit(*tmp))             num = num * 10 + (*tmp - '0');         tmp++;     }      return num; } 供参考～，可以用你老师的.txt文件测试一下，有问题再提出来。

user: user-1
content: 引用 1 楼 user-2 的回复:接分   #define MAX_LEN 256 int my_strtoint(char * mystr) { 	char temp_str[MAX_LEN]={0}; 	int i=0,j=0; 	while(mystr[i]!='\0'&&i<MAX_LEN) 	{ 		if(isdigit(mystr[i])) 		{ 			temp_str[j]=mystr[i]; 			j++;  		}        i++; 	} 	return atoi(temp_str); }   int main(){ 	 char strline[MAX_LEN]={0}; 	 FILE *fpt; 	if((fpt=fopen("A1.txt","a+"))==NULL) 	{ 		printf("Can't open file.\n"); 		return -1; 	}   	int result_int=0; 	int line_count=0; 	while(fgets(strline,MAX_LEN,fpt)!=NULL) 	{ 	   line_count=my_strtoint(strline); 	   result_int+=line_count;        printf("read line str:%s   =>:%d\r\n",strline,line_count); 	   if(feof(fpt)||ferror(fpt))break; 	}  	 fseek(fpt, SEEK_END, 0); 	 printf("total is:%d",result_int); 	 fprintf(fpt,"\r%d",result_int); 	 getchar();      return 0;  }   以a+的模式打开文件，是不是前面的字符串就读取不到了？  是不是应该以"r+"的模式打开文件

user: user-2
content: 你的要求好像有这条:并把每行转换出来的整数求和且写入到该文件的尾部。  现在查文档这么方便，资料动动手指就有了。主要分读写模式，还有二进制文件还是文本文件，读取之前可以fseek到文件头 字符串 说明  r 以只读方式打开文件，该文件必须存在。  r+ 以读/写方式打开文件，该文件必须存在。  rb+ 以读/写方式打开一个二进制文件，只允许读/写数据。  rt+ 以读/写方式打开一个文本文件，允许读和写。  w 打开只写文件，若文件存在则文件长度清为零，即该文件内容会消失；若文件不存在则创建该文件。  w+ 打开可读/写文件，若文件存在则文件长度清为零，即该文件内容会消失；若文件不存在则创建该文件。  a 以附加的方式打开只写文件。若文件不存在，则会创建该文件；如果文件存在，则写入的数据会被加到文件尾后，即文件原先的内容会被保留（EOF 符保留）。  a+ 以附加方式打开可读/写的文件。若文件不存在，则会创建该文件，如果文件存在，则写入的数据会被加到文件尾后，即文件原先的内容会被保留（EOF符不保留）。  wb 以只写方式打开或新建一个二进制文件，只允许写数据。  wb+ 以读/写方式打开或新建一个二进制文件，允许读和写。  wt+ 以读/写方式打开或新建一个文本文件，允许读和写。  at+ 以读/写方式打开一个文本文件，允许读或在文本末追加数据。  ab+ 以读/写方式打开一个二进制文件，允许读或在文件末追加数据。    引用 6 楼 lhr1237 的回复:[quote=引用 1 楼 user-2 的回复：]接分   #define MAX_LEN 256 int my_strtoint(char * mystr) { 	char temp_str[MAX_LEN]={0}; 	int i=0,j=0; 	while(mystr[i]!='\0'&&i<MAX_LEN) 	{ 		if(isdigit(mystr[i])) 		{ 			temp_str[j]=mystr[i]; 			j++;  		}        i++; 	} 	return atoi(temp_str); }   int main(){ 	 char strline[MAX_LEN]={0}; 	 FILE *fpt; 	if((fpt=fopen("A1.txt","a+"))==NULL) 	{ 		printf("Can't open file.\n"); 		return -1; 	}   	int result_int=0; 	int line_count=0; 	while(fgets(strline,MAX_LEN,fpt)!=NULL) 	{ 	   line_count=my_strtoint(strline); 	   result_int+=line_count;        printf("read line str:%s   =>:%d\r\n",strline,line_count); 	   if(feof(fpt)||ferror(fpt))break; 	}  	 fseek(fpt, SEEK_END, 0); 	 printf("total is:%d",result_int); 	 fprintf(fpt,"\r%d",result_int);          fclose(ftp); 	 getchar();      return 0;  }  谢谢谢谢！[/quote]

user: user-2
content: 接分   #define MAX_LEN 256 int my_strtoint(char * mystr) { 	char temp_str[MAX_LEN]={0}; 	int i=0,j=0; 	while(mystr[i]!='\0'&&i<MAX_LEN) 	{ 		if(isdigit(mystr[i])) 		{ 			temp_str[j]=mystr[i]; 			j++;  		}        i++; 	} 	return atoi(temp_str); }   int main(){ 	 char strline[MAX_LEN]={0}; 	 FILE *fpt; 	if((fpt=fopen("A1.txt","a+"))==NULL) 	{ 		printf("Can't open file.\n"); 		return -1; 	}   	int result_int=0; 	int line_count=0; 	while(fgets(strline,MAX_LEN,fpt)!=NULL) 	{ 	   line_count=my_strtoint(strline); 	   result_int+=line_count;        printf("read line str:%s   =>:%d\r\n",strline,line_count); 	   if(feof(fpt)||ferror(fpt))break; 	}  	 fseek(fpt, SEEK_END, 0); 	 printf("total is:%d",result_int); 	 fprintf(fpt,"\r%d",result_int); 	 getchar();      return 0;  }