问题描述
- c语言,用fgets将文件的数据读取后,如何对返回的数据进行操作,例如排序
-
代码如下,我做法是 将fgets(readline, N, fp) 返回的readline 用atoi函数转为整型后赋给数组list,然后对list数组中的数据进行排序。但实际运行下来,没有得到想要的结果,从printf结果看,atoi函数未能将readline 中的值转为整型,请各位大虾不吝指教,如何才能拿到fgets返回的readline的值,然后进行排序?
#define N 256
#define SIZE 6
int list[SIZE];
int data;
int main()
{ void save();
int i,j,k,temp;
FILE *fp;
char *filename = "z1.txt";
char readline[N] = {''};
if ((fp = fopen(filename, "r")) == NULL) {
fprintf(stderr, "%sopenfailed.n", filename);
exit(EXIT_FAILURE);
}
k=0;
while ( fgets(readline, N, fp) != NULL ) {
list[k] = atoi(readline); //->想将读到的字符串转为整型
printf("atoi=%d",atoi(readline); //->从输出结果看,未将readline中的字符串转换为整型数据,应该如何写才对?
printf("list[s]=%s",list[k]);k++;
}
fclose(fp);
//读取的数据进行排序
for(i=0;i
for(j=i;j
if(list[i]
{temp=list[i];
list[i]=list[j];
list[j]=temp;
}
printf("After sorting:n");
for(i=0;i
printf("%dn",list[i]); //->此处的输出结果看,不是文件中读到的数据,数据很奇怪
return 0;
}
解决方案
你确定没有读到空格分隔符什么的,有这些的话atoi 会失效