gpt4 book ai didi

c - 从文件中存储的数字中读取各个数字

转载 作者:行者123 更新时间:2023-11-30 18:32:24 26 4
gpt4 key购买 nike

我目前正在解决 Project Euler 问题作为学习 C 的一种方式,我在问题 #8 上遇到了麻烦,程序的实际数学和主要部分很好,但该方法需要从大的 ( 1000 位)数字,我将其放入文件中。

下面的代码是一个测试用例,其中我的文件“test.txt”的编号是“123456789”。我想做的是将每个数字打印在单独的行上。

#include <stdio.h>

int main()
{
int c = 0;
FILE *fp;
fp = fopen("test.txt", "r");

while(c != EOF)
{
c = fgetc(fp);
printf("%i\n", c);

}

fclose(fp);

}

当我运行此代码时,我得到输出

49
50
51
52
53
54
55
56
57
10
-1

我有一种预感,我的代码中缺少一些非常简单的东西,我希望它在 fgetc 位中。如果是这种情况,什么是更好的函数,我也很好奇为什么会得到如此奇怪的输出 - 当我用 1000 位数字尝试时,我发现了类似的模式,数字在 49 到最高 50 之间几乎是循环输出。请记住我只是 C 的初学者,干杯。

最佳答案

这些是 ASCII对于数字:

48 = '0'
49 = '1'
50 = '2'

等等。它们采用这种格式是因为它们是存储在文本文件中代表整数的字符。

您需要打印:

if((48 <= c) && (c <= 57))
printf("%d\n", c - '0');

注意:您需要进行 if 检查,因为 10 是换行符,而 -1 是 EOF,您打印的内容超出了您的预期。

当然,如果检查的话,有很多方法可以做到这一点:

if(('0' <= c) && (c <= '9'))

if(isdigit(c))

重点很简单,您需要检查是否只需要数字。

关于c - 从文件中存储的数字中读取各个数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13992307/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com