c - 从 C 中的文本文件中查找并保存整数
问题描述
我对编程和 C 语言非常陌生。我有一些文本文件,其中包含一些随机文本和一个我想查找并保存的整数。文本文件看起来像这样(在这种情况下我只想保存 23,而不是 56):
# this is a comment
23
this is some random text
56
这是我的代码:
int *num = malloc(sizeof(int));
*num = fgetc(f);
while(!feof(f)){
*num = fgetc(f);
if(isdigit(*num)){
break;
}
}
if(!isdigit(*num)){
printf("Error: no number found.\n");
free(num);
}
else{
printf("%c\n", *num);
}
我现在有点卡住了,我的程序只打印出数字 2:/ 非常感谢您的帮助。
解决方案
正如@pbn 所说,你最好使用sscanf
.
但是,如果您真的非常想要,您可以按照自己的方式进行,一次读取一个字符,但是您需要自己“构建”整数,将字符转换为整数,跟踪您拥有的内容,并且将您已有的数字的每个数字乘以 10 的幂。
像这样的东西(不是完整的代码,只是为了让你开始):
int c;
int num = 0;
while (c = fgetc(f)) {
if(!isdigit(c)) {
break;
}
num = (num * 10) + (c - '0');
}
该c- '0'
部分是将整数的文本表示形式转换为整数本身。0
是字符 48,1
是 49 等等。
这是假设在数字行中,您只有数字,而不是数字和非数字字符的混合。
另外,不要使用!feof(file)。
推荐阅读
- javascript - 在网站上实现动态列表的最有效方法
- java - 嵌套的while循环不会要求再次正确运行程序
- php - 使用 Ckeditor 编辑数据库中保存的数据
- python - 使用没有 ValueError 的 tkinter 模块时如何导入函数
- java - 如何将textview中的2个单词左对齐和右对齐
- java - 如何将两个子actor的总和结果返回给父级并打印出来
- typescript - TS2307:找不到模块
- mongodb - bulk 正在替换其他字段,即使声明了 upsert
- java - 维护引用然后分配新对象线程安全吗?
- c++ - 如何在跳水比赛中降低循环内的最高/最低分数?