我可以读到*文件中有*字符,但不能将它们打印到另一个文件中

时间:2014-02-23 16:42:59

标签: c printf

所以,如果我说fprintf(output, "hello");它会打印hello很多次,所以它肯定会识别出里面有字符。但是当我说打印c时,文件是空白的。

如何让chars从一个文件打印到另一个文件?

编辑:上面的那些声明是针对其余代码的,但我现在只是尝试测试打印。

编辑:仍在解决这个问题。可能只是使用putty的重定向。

3 个答案:

答案 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的了解要多得多。