我正在用 C 语言尝试 I/O 重定向;我重定向标准输入,以便可以在控制台上打印 txt 文件中包含的数字。
int main() {
int number;
scanf("%d", &number);
printf("The number is %d.", number);
}
在 Xcode 中,我进入 Products 文件夹,然后双击可执行文件以启动控制台。我发出这一行:
./main.c < number.txt
控制台打印出一个数字,但不是正确的数字。如果您愿意,请下载这个简单的项目 here 。我在这里做错了什么?
更新
- 我在使用
CSV
文件时遇到了同样的问题; - 我检查了
scanf()
的返回值,它等于 0。 - 文件中包含的数字是
4
(我最近将其更改为5
),但是shell的输出是数字是1726119990。
最佳答案
看起来你正在做一些类似于启动程序并获得一个空行(这是从标准输入读取的scanf()
),然后你写./main.c < number.txt
这意味着您没有将包含该值的文件通过管道传输到您的程序中,而是 scanf 正在读取字符串,并且由于它找不到数字,因此返回 0。
您需要做的是创建一个控制台窗口,这样您就可以看到前面的 $,然后转到 exe 所在的目录并写入 ./main < number.txt
关于c - 如何在 Mac 上使用 C I/O 重定向?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32128545/