所以,如果我说fprintf(output, "hello");
它会打印hello很多次,所以它肯定会识别出里面有字符。但是当我说打印c时,文件是空白的。
如何让chars从一个文件打印到另一个文件?
编辑:上面的那些声明是针对其余代码的,但我现在只是尝试测试打印。
编辑:仍在解决这个问题。可能只是使用putty的重定向。
答案 0 :(得分:0)
要输出字符,请使用%c
格式说明符:
fprintf(output, "%c", c);
或者您可以使用fputc()
来完成这项工作。
答案 1 :(得分:0)
我不知道您的编译器如何实现getc
,但我怀疑该行
int getc(allcrazy);
与你所看到的疯狂行为有关。
稍作修改,您的代码就可以了。这就是我的魅力所在。
#include <stdio.h>
int main(int argc, char **argv)
{
FILE *allcrazy;
FILE *output;
allcrazy = fopen("allcrazy.c", "r");
output = fopen("output.c", "w");
int c, readChar;
// STATE state = READING_INPUT;
int errorLine = 0;
// int getc(allcrazy);
while (c = fgetc(allcrazy) != EOF) {
fputc(c, output);
}
return 0;
}
答案 2 :(得分:0)
您的主要问题是此行中的括号不足:
while (c = fgetc(allcrazy) != EOF) {
它为c
分配0或1,并尝试将 Control-A 字符写入输出文件。代码相当于:
while (c = (fgetc(allcrazy) != EOF)) {
您需要使用:
while ((c = fgetc(allcrazy)) != EOF) {
这在比较之前进行了分配。由于c
是一个int
,你应该从这里获得一个不错的机会......好吧,只要你也修复印刷。
循环体中的printf()
语句也有缺陷;您不包含格式字符串。您应该使用putc(c, output);
或fprintf(output, "%c", c);
- 或者您可以使用fputc(c, output);
,但我真的认为不需要这样做。
在写入(fprintf(output, c)
)时,您传递int
,其中函数需要一个字符指针。你的编译器应该抱怨这个。如果不是,您需要调高警告级别,直到它,或者您需要获得更好的编译器。你需要注意编译器的警告;记住,在这个阶段,它比你对C的了解要多得多。