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

在linux中,我现在已经读取了一个文件,并以字符串形式打印到终端了。但是我想把文件里面的字符串用for循环分解出来,变成数字,然后把它存到一个数组里面,并进行排序,再输... 在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
展开
 我来答
风雷九州
2017-04-07 · TA获得超过3025个赞
知道大有可为答主
回答量:1127
采纳率:100%
帮助的人:435万
展开全部

可以直接按照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;
}
ccccccc12
2017-04-07 · TA获得超过428个赞
知道小有建树答主
回答量:378
采纳率:0%
帮助的人:300万
展开全部
你可以用%d来直接读取数字,没必要先当字符串再转换
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式