c语言 提取文本里的数字,C语言 急 多谢啊怎样在一个文本里提取以数字开头的行内容...

该博客讨论了如何使用C语言从文本中提取以数字开头的行并进行排序。提供了多种解决方案,包括使用fgets()和isdigit()函数逐行检查,以及使用qsort()函数进行排序。示例代码展示了如何实现这一功能。
摘要由CSDN通过智能技术生成

C语言 急 谢谢啊:怎样在一个文本里提取以数字开头的行内容

C语言:怎样在一个文本里提取以数字开头的行内容,并排序后导出到另一文本,急  谢谢啊

(数字排序按在文本出现的早晚,如下就是 220  10  110 )

例如:文本1

白云城1#测距

五峰GPS定位

220km故障

10km白07备用

110km检修

夜明珠2#断档

220km故障

110km检修

导出到2文本:

220km故障

220km故障

10km白07备用

110km检修

110km检修

------解决方案--------------------

C#只要1行:

File.WriteAllLines("output.txt", File.ReadAllLines("input.txt").Where(x => Regex.IsMatch(x, @"^\d+")).ToArray());

------解决方案--------------------

1、顺序读取每一行,fgets()函数

2、使用函数isdigit()判断读取到的每一行的第一个字符是不是数字

3、第一个字符是数字的字符串追加到另一个文本中,fprintf()函数

------解决方案--------------------

if(buffer[0] >= '0' && buffer[0] <= '9'){

//数字

//写入文件

}

------解决方案--------------------

我是来混分的

感觉这个用c有点大炮打蚊子,不如用脚本来的快;当然,给客户做应用程序就另说了

------解决方案--------------------

这个世界上最大的差别和最远的距离都存在于“说”和“做”之间。

11550778.gif

//在一个文本里提取以数字开头的行内容,并排序后导出到另一文本,急  谢谢啊

//(数字排序按在文本出现的早晚,如下就是 220  10  110 )

//例如:1.txt

//白云城1#测距

//五峰GPS定位

//220km故障

//10km白07备用

//110km检修

//夜明珠2#断档

//220km故障

//110km检修

//

//导出到2.txt

//220km故障

//220km故障

//10km白07备用

//110km检修

//110km检修

#include 

#include 

#include 

#define MAXL 1000  //最多数字开头的行数

#define MAXC 100   //每行最多字符

#define MAXD 10000 //数字最大值

char ln[MAXC];

static char s[MAXL*MAXC];

static int o[MAXD];

int n,d,i;

FILE *f;

int compare(const void *arg1,const void *arg2) {

int d1,d2;

sscanf((char *)arg1,"%d",&d1);

sscanf((char *)arg2,"%d",&d2);

return o[d1]-o[d2];

}

int main() {

f=fopen("1.txt","r");

if (NULL==f) {

printf("Can not open file 1.txt!\n");

return 1;

}

n=0;

while (1) {

if (NULL==fgets(ln,MAXC,f)) break;

if (1==sscanf(ln,"%d",&d)) {

strcpy(s+n*MAXC,ln);

if (0==o[d]) {

o[d]=n+1;

}

n++;

if (n>=MAXL) {

printf("Too many lines(>%d)!\n",MAXL);

break;

}

}

}

fclose(f);

qsort(s,n,MAXC,compare);

f=fopen("2.txt","w");

for (i=0;i

fprintf(f,"%s",s+i*MAXC);

}

fclose(f);

return 0;

}

------解决方案--------------------

引用:Quote: 引用:C#只要1行:

File.WriteAllLines("output.txt", File.ReadAllLines("input.txt").Where(x => Regex.IsMatch(x, @"^\d+")).ToArray());

数字排序按在文本出现的早晚,做了这一点吗。

File.WriteAllLines("output.txt", File.ReadAllLines("input.txt").Where(x => Regex.IsMatch(x, @"^\d+")).OrderBy(x => x).ToArray());

------解决方案--------------------

看错了。

File.WriteAllLines("output.txt", File.ReadAllLines("input.txt").Where(x => Regex.IsMatch(x, @"^\d+")).GroupBy(x => x).SelectMany(x => x).ToArray());

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值