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有点大炮打蚊子,不如用脚本来的快;当然,给客户做应用程序就另说了
------解决方案--------------------
这个世界上最大的差别和最远的距离都存在于“说”和“做”之间。
//在一个文本里提取以数字开头的行内容,并排序后导出到另一文本,急 谢谢啊
//(数字排序按在文本出现的早晚,如下就是 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());