2014-02-23 33 views
1

所以,如果我說fprintf(output, "hello");打印hello一堆,所以它肯定認識到裏面有字符。但是當我說打印c時文件是空白的。我可以看到有*字符在一個文件中,但不打印出來到另一個文件

如何獲得它從一個文件打印到另一個文件的字符?

編輯:上面的那些聲明是針對代碼的其餘部分的,但我只是想現在測試打印。

編輯:仍然解決這個問題。可能只是使用膩子重定向。

回答

0

要輸出的字符,請使用%c格式說明:

fprintf(output, "%c", c); 

,或者您可以使用fputc()這項工作。

+0

好吧我有這個:'fprintf(output,「c%」,c);'但它只打印「cccc」,那麼爲什麼不打印包含內容? – HelloKomputer

+2

@HelloKomputer:它是'%c',而不是'c%'。 – Michael

+0

好吧,我的輸入文件allcrazy,有這樣的代碼:一些/ *瘋狂*/stuf在我嘗試從allcrazy讀取並打印輸出時,它只是給我一個非常長的下劃線的紅色錯誤行,/<編輯摺疊defaultstate =「摺疊」desc =「comment」> 我不在乎它是否給出語法錯誤,但它不打印任何東西。 – HelloKomputer

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; 
} 
0

您的主要問題是在此行中的括號不足:

while (c = fgetc(allcrazy) != EOF) { 

它把0或1至c,並試圖控制-A字符寫入輸出文件。

while (c = (fgetc(allcrazy) != EOF)) { 

您需要使用:

while ((c = fgetc(allcrazy)) != EOF) { 

這確實比較之前分配到的代碼是等價的。由於cint,您應該從這裏得到一個相當好的機會......好吧,只要您修復打印。

printf()聲明在循環體中也有缺陷;您不包含格式字符串。您應該使用putc(c, output);fprintf(output, "%c", c); - 或者您可以使用fputc(c, output);,雖然我真的沒有在這裏看到需要。

正如您所寫(fprintf(output, c)),您通過一個int函數需要一個字符指針。你的編譯器應該抱怨這個。如果不是,則需要調高警告級別,直至完成,否則您需要獲得更好的編譯器。你需要注意你的編譯器的警告;記住,在這個階段,它比你知道更多關於C的知識。

相關問題