c语言问题 如何从txt文本判断读取字符串是否是数字字符串,提取数字字符串并保存为txt文件

就是前面有qqqqq,12213445字母逗号或空格提取以后就是12213445并逐行为保存文本txt文件要完整代码谢谢... 就是前面有qqqqq, 12213445字母 逗号或空格
提取以后就是12213445 并逐行为保存文本txt文件
要完整代码 谢谢
展开
 我来答
帐号已注销
推荐于2017-09-12
知道答主
回答量:11
采纳率:0%
帮助的人:8.3万
展开全部
#include <stdio.h>
#include <stdlib.h>

#define mcr__file_name_max_length    256 /* 文件名最大的长度 */

int main(int argc, char* argv)
{
 char chr1_source_file_name[mcr__file_name_max_length + 1]; /* 源文件路径和文件名 */
 char chr1_new_file_name[mcr__file_name_max_length + 1];    /* 保存数字的新文件名 */
 char chr_read;       /* 临时读取出来的字符 */
 /* 换行标记,如果值为1表示新文件内容需要换行,为0表示不需要换行 */
 unsigned char uchr_next_line = 0;
 unsigned char uchr_number = 0;  /* 如果数字一次都没出现过则为0,否则为1 */
 FILE* p_file_source; /* 指向源文件的文件指针 */
 FILE* p_file_new;    /* 指向新文件的文件指针 */

 /* 获取目标文件和新文件的名称。如果文件和程序在同一个文件夹下,
    则不需要输入完整路径 */
 printf("请输入目标文件完整的路径及文件名:");
 scanf("%s", chr1_source_file_name);
 printf("请输入新文件的完整路径及文件名:");
 scanf("%s", chr1_new_file_name);

 p_file_source = fopen(chr1_source_file_name, "r");
 if (p_file_source) /* 如果成功打开文件 */
 {
   /* 创建一个新文件用于保存数字字符串 */
   p_file_new = fopen(chr1_new_file_name, "w");
   if (p_file_new == NULL) /* 如果新文件创建失败 */
   {
     fclose(p_file_source); /* 关闭先前打开的源文件 */
     exit(0);               /* 退出程序 */
   }
   /* 读取源文件中的内容 */
   while (!feof(p_file_source))
   {
     chr_read = fgetc(p_file_source);
     if ( '0' <= chr_read && chr_read <= '9') /* 如果读取到的字符是数字 */
     {
       uchr_number = 1; /* 标明,数字出现过 */
       if (uchr_next_line) /* 如果换行标记为真 */
       {
         fputc('\n', p_file_new); /* 换行 */
         uchr_next_line = 0; /* 将换行标记重置为0 */
       }
       fputc(chr_read, p_file_new); /* 将读取到的数字字符保存到新文件 */
     }
     else /* 如果读取到的字符不是数字字符 */
     { /* 将换行标记设置为1,那么下一次写文件时,将会换行 */
       if (uchr_number)
       {
         uchr_next_line = 1;
       }
     }
   }
   fclose(p_file_source);
   fclose(p_file_new);
 }
 return 1;
}

运行结果如图所示:

源欣悦0eY
2017-09-04 · TA获得超过333个赞
知道小有建树答主
回答量:163
采纳率:0%
帮助的人:85.3万
展开全部
逐个字符循环,根据ASCII码来判断,0~9的ASCII码是0x30~0x39,在这个范围内的就是数字,存到数组里,最后写到txt文件中。代码很简单,还是建议你自己写,自己写出来才能有提高,别人给你写好的你很难去理解和记住。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
xoaxa
2017-08-31 · TA获得超过8610个赞
知道大有可为答主
回答量:6415
采纳率:72%
帮助的人:3480万
展开全部
#include <stdio.h>
#include <stdlib.h>// for exit()
#include <ctype.h>// for isdigit()

int main() {
char infile[] = "indata.txt",outfile[] = "outdata.txt";
char data[256];
FILE *inf,*outf;
int i,j;
inf = fopen(infile,"rt");
outf = fopen(outfile,"wt");
if(inf == NULL) {
printf("不能打开数据文件:%s\n",infile);
exit(1);
}
if(outf == NULL) {
printf("不能打开数据文件:%s\n",outfile);
exit(2);
}
while(!feof(inf)) {
fscanf(inf,"%s",data);//空白符作为分割符
for(i = 0,j = 0; data[i]; ++i) {
if(isdigit(data[i])) data[j++] = data[i];
}
if(j) {
data[j] = '\0';
printf("%s\n",data,outf);
}
}
fclose(inf);
fclose(outf);
return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
夏菁1999
2012-06-20 · TA获得超过2187个赞
知道答主
回答量:127
采纳率:0%
帮助的人:75万
展开全部
C语言中有一个读文件的东西(如fgets),然后将文本中的字符串复制到一个字符数组中,用for语句,逐个判断每个字符是否大于等于‘0’且小于等于‘9’,如果每个字符到满足这个条件,就将这个数组中的字符串传到一个txt文件之中(用fputs),这样就保存到.txt文件中了,一定要注意close(文件指针)!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
人珠吃幸静00
2012-06-20
知道答主
回答量:9
采纳率:0%
帮助的人:1.4万
展开全部
C语言中有一个读文件的东西(如fgets),然后将文本中的字符串复制到一个字符数组中,用for语句,逐个判断每个字符是否大于等于‘0’且小于等于‘9’,如果每个字符到满足这个条件,就将这个数组中的字符串传到一个txt文件之中(用fputs),这样就保存到.txt文件中了,一定要注意close(文件指针)!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式