我现在想读取一个文件里面的字符串,并把它进行排序输出(C语言的)

在linux中,我现在已经读取了一个文件,并以字符串形式打印到终端了。但是我想把文件里面的字符串用for循环分解出来,变成数字,然后把它存到一个数组里面,并进行排序,再输出
这是我现在写的代码:
#include <stdio.h>
#define F_PATH "/home/lgz/326_1.txt"
char c;
int main( )
{
FILE *fp=NULL;//
fp=fopen(F_PATH,"r");
if(NULL == fp) return -1;
while(fscanf(fp,"%c",&c)!=EOF) printf("%c",c);
fclose(fp);
fp=NULL;

return 0;
}
这是326_1.txt文件里面的内容
13
35
351
2351
1
0
55
66
78
23
58
190
567
987

可以直接按照int类型的数据,进行读入和输出,不需要按照char类型一个字符一个字符的读入。按照int类型读取,会自动跳过空白分隔符(回车,空格,TAB)等。

#include <stdio.h>
#define F_PATH "/home/lgz/326_1.txt"
//char c;  不需要全局变量
int main( )
{
FILE *fp=NULL;//
int a[100];
int i=0;
int j,k,tmp;
fp=fopen(F_PATH,"r"); 
if(NULL == fp) 
return -1;
while(fscanf(fp,"%d",&a[i++])!=EOF)
{
if(i>=100)
{
break; //防止数组越界,最多读取100个数字,同时记录个数
}
}
fclose(fp);
//fp=NULL;  不需要置空,已经不用了

//数组排序功能,冒泡排序
for(j=0;j<i;j++)
{
for(k=j+1;k<i;k++)
{
if(a[j]>a[k])
{
tmp=a[j];
a[j]=a[k];
a[j]=tmp;
}
}
}

//最后循环输出
for(j=0;j<i;j++)
printf("%d ", a[j]);

return 0;
}

温馨提示:内容为网友见解,仅供参考
第1个回答  2017-04-07
你可以用%d来直接读取数字,没必要先当字符串再转换
相似回答