c语言问题 如何从txt文本判断读取字符串是否是数字字符串,提取数字字符串并保存为txt文件
就是前面有qqqqq,12213445字母逗号或空格提取以后就是12213445并逐行为保存文本txt文件要完整代码谢谢...
就是前面有qqqqq, 12213445字母 逗号或空格
提取以后就是12213445 并逐行为保存文本txt文件
要完整代码 谢谢 展开
提取以后就是12213445 并逐行为保存文本txt文件
要完整代码 谢谢 展开
9个回答
展开全部
#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;
}
运行结果如图所示:
展开全部
逐个字符循环,根据ASCII码来判断,0~9的ASCII码是0x30~0x39,在这个范围内的就是数字,存到数组里,最后写到txt文件中。代码很简单,还是建议你自己写,自己写出来才能有提高,别人给你写好的你很难去理解和记住。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#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;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
C语言中有一个读文件的东西(如fgets),然后将文本中的字符串复制到一个字符数组中,用for语句,逐个判断每个字符是否大于等于‘0’且小于等于‘9’,如果每个字符到满足这个条件,就将这个数组中的字符串传到一个txt文件之中(用fputs),这样就保存到.txt文件中了,一定要注意close(文件指针)!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
C语言中有一个读文件的东西(如fgets),然后将文本中的字符串复制到一个字符数组中,用for语句,逐个判断每个字符是否大于等于‘0’且小于等于‘9’,如果每个字符到满足这个条件,就将这个数组中的字符串传到一个txt文件之中(用fputs),这样就保存到.txt文件中了,一定要注意close(文件指针)!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询