2 lvxuehui lvxuehui 于 2014.09.07 10:37 提问

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] = {'\0'};
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("%d\n",list[i]); //->此处的输出结果看,不是文件中读到的数据,数据很奇怪
return 0;
}

1个回答

likely_zhao
likely_zhao   2014.09.16 22:01

你确定没有读到空格分隔符什么的,有这些的话atoi 会失效

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
C语言写的冒泡排序程序,从文件读出数排序后写入文件
C语言写的冒泡排序程序,从文件读出数排序后写入文件
C语言产生一个大txt文件,并进行排序
产生了一个十万行的txt文件,每一行都是一个0-512之间的随机数,并对这个文件进行排序,生成一个递增排序的文件: #define _CRT_SECURE_NO_WARNINGS #include #include #include //生成一个超大的txt文件 void BuildBigTxtFile() { srand(time(NULL)); FILE *pw = fope
将数据从文件中读出并排序
#include #include void read();//显示排序之前的文件 void outfile();//输入到数组中 void sort(int a[], int n);//此处为冒泡排序 int main() { read(); outfile(); return 0; } void read() { printf("after of sort:
文件排序(用C语言描述)
对文件的进行排序,并写入另一个文件, 代码: 1 对小文件进行排序: #include #include #include #define MAX 1000 void swap(int *a, int *b) //交换函数 { int tmp = *a; *a = *b; *b = tmp; } v
从文件中读取数据,排序之后输出到另一个文件中
文件中有一组数据,要求排序后输出到另一个文件中去 主要有两个知识点: 排序、文件操作 C++/C代码如下: [cpp] view plain copy #include   #include   #include   using namespace std;   void Order(vectorint> &data)//
C语言 字符串用指针数组将字符串进行排序
#include #include int main(void) { char str[3][20],*p[3],temp[20]; int i,j; for(i=0;i { p[i]=str[i];//  p[I]为指针变量.p[I]指向行地址。 gets(p[i]); } for(i=0;i for(j=i+1;j { if( strcmp(p[i],p[j])
C语言:用快速排序算法对一个数组进行排序
#include #include #include #define NUMBER 10 //NUMBER为数组的大小 void quickSort(int [],int,int); void display(int [],int); int main() { int num[NUMBER]; int randValue = 0; int i,temp; srand(tim
对结构体中的数据进行排序
#include #include const int S=51000; using namespace std; struct TT { int id,v1,v2; }f[S]; bool cmp1(const TT &a, const TT &b)//按照结构体元素v1进行排序 { return (a.v1>b.v1); } bool cmp2(const TT &a, c
C语言实现对数组中的数据进行冒泡排序(从小到大)
#include #include #include int main(int argc, char* argv[]) { int i,j,k,l; int temp; int str[11] = {0}; for(i = 0;i < 10;i++) {
C语言文件操作之--读取文件最后一行(通过fgets完成)
#include void main() { FILE* fp = fopen("E:/Test/test.txt", "r"); //注意这里的斜杠方向和换行字符斜杠方向是相反的 char a[1024]; while(!feof(fp)) { fgets(a,sizeof(a),fp); if(feof(fp)) printf("%s\n",a);