所以,如果我說fprintf(output, "hello");
打印hello一堆,所以它肯定認識到裏面有字符。但是當我說打印c時文件是空白的。我可以看到有*字符在一個文件中,但不打印出來到另一個文件
如何獲得它從一個文件打印到另一個文件的字符?
編輯:上面的那些聲明是針對代碼的其餘部分的,但我只是想現在測試打印。
編輯:仍然解決這個問題。可能只是使用膩子重定向。
所以,如果我說fprintf(output, "hello");
打印hello一堆,所以它肯定認識到裏面有字符。但是當我說打印c時文件是空白的。我可以看到有*字符在一個文件中,但不打印出來到另一個文件
如何獲得它從一個文件打印到另一個文件的字符?
編輯:上面的那些聲明是針對代碼的其餘部分的,但我只是想現在測試打印。
編輯:仍然解決這個問題。可能只是使用膩子重定向。
要輸出的字符,請使用%c
格式說明:
fprintf(output, "%c", c);
,或者您可以使用fputc()
這項工作。
我不知道你的編譯器是如何實現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;
}
您的主要問題是在此行中的括號不足:
while (c = fgetc(allcrazy) != EOF) {
它把0或1至c
,並試圖控制-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的知識。
好吧我有這個:'fprintf(output,「c%」,c);'但它只打印「cccc」,那麼爲什麼不打印包含內容? – HelloKomputer
@HelloKomputer:它是'%c',而不是'c%'。 – Michael
好吧,我的輸入文件allcrazy,有這樣的代碼:一些/ *瘋狂*/stuf在我嘗試從allcrazy讀取並打印輸出時,它只是給我一個非常長的下劃線的紅色錯誤行,/<編輯摺疊defaultstate =「摺疊」desc =「comment」> 我不在乎它是否給出語法錯誤,但它不打印任何東西。 – HelloKomputer