【发布时间】:2014-10-28 23:35:02
【问题描述】:
我之前看到有人问过这个问题,但似乎没有一个答案适合我的问题。
我正在尝试编写一个函数来读取文件的内容并打印它们。这是我的代码;
int main()
{
int c;
fseek(stdin, 0, SEEK_SET);
c = getc(stdin);
while ((c = getchar()) != EOF)
{
putchar(c);
fseek(stdin, 1, SEEK_CUR);
c = getc(stdin);
}
}
运行代码时,我使用管道输入文件;
./[Program] < [File.txt]
例如。
./FileRead < Hello.txt
但是,当我运行它时,我会收到一堆乱七八糟的随机字母。这是一个例子:
我输入的文件内容:
世界你好!
这是一个测试文件。
我希望这行得通!
这是输出:
很好
Tsssfe
iwk
谁能帮我找出问题所在?
【问题讨论】:
-
您使用 fseek 是为了什么?只是
while ((c = getchar()) != EOF) { putchar(c); } -
这似乎可以解决我的问题。但是,当它打印文本时,它似乎错过了文件中的第一个字符。你知道如何解决这个问题吗?
-
或
getc:由于循环读取一个字符、跳过一个字符并忽略一个字符,因此您会得到预期的结果:每三个字符。 -
@SexRobomb 在while循环前删除
fseek(stdin, 0, SEEK_SET); c = getc(stdin);。 -
你没注意到
eood只是Hello World!从第二个字符开始,然后每两个字符跳过一次吗?