2013-10-09 22 views
-1

部分是這樣的:如何在cpp和c中不使用cout/printf輸出文本?我的cpp的代碼

void Error() 
{ 
string line; 
fperror.open("Error.txt"); 
while (getline (fperror,line)) 
{ 
    cout << line << endl; 
} 
fperror.close(); 

return; 
} 

相應的C是這樣的:

void Error() 
{ 
int c; 
    fperror= fopen("Error.txt", "r"); 
c=getc(fperror); 
while(c != EOF) 
{ 
    putchar(c); 
    c=getc(fperror); 
} 
fclose(fperror); 
return; 
} 

這是我的項目我的類,我們的教授告訴我們,我們不允許使用函數中的cout/cin或printf/scanf。所以我想知道是否可以輸出文本文件的內容而不使用cout/printf? (我們必須使用void fun(void)類型的函數)

+4

'fread'/'fwrite'?雖然如果這是一個C++類,它是相當愚蠢的取締iostreams ... – cHao

+3

['fgets'](http://en.cppreference.com/w/c/io/fgets),['puts'](http ://en.cppreference.com/w/c/io/puts),['fwrite'](http://en.cppreference.com/w/c/io/fwrite)等等。而且你的老師需要理解*沒有人*這樣的代碼,如果他們完全可以避免的話。不適用于格式化輸出。如果你想*原始*輸出,然後hellyas。 – WhozCraig

+0

呃。即使對於原始輸出,C的東西相對於像std :: cout << fperror.rdbuf();' – cHao

回答

1

當然還有其他函數可以調用,但我懷疑你錯過了這一點。你的教練可能意味着你的功能不應該打印任何東西本身。相反,它應該返回然後打印調用者。您的任務的一部分目的可能是讓您證明您瞭解return聲明的工作原理以及如何傳遞和接收函數參數。有鑑於此,使用的任何函數來生成輸出,不僅僅是printf和cout,將是一個錯誤。提到這兩個是因爲這些可能是你在課堂上教過的唯一東西,列舉所有其他可能性可能會混淆和壓倒那些擔心他們應該知道所有其他功能是什麼的學生。諮詢你的導師確認。

+0

相當醜陋實際上,她告訴我們使用四種不同類型的函數(不使用cout/printf _specifically_在他們中),而我遇到的問題是函數不返回任何東西,同時也不會收到任何東西。對於我來說,誰是初學者,我只能想到如果函數輸出不能接收和返回任何東西,那麼我只能想到它。 – akirinrin

+0

現在你已經自相矛盾了。你剛剛說過你應該使用這些功能,但在你的問題中,你說你不允許使用它們。再次,嚮導師確認你應該做什麼。也許你應該使用*文件*? –

+1

我們應該使用它們(如在四種不同類型的函數中);我說我們不允許在上述函數中使用cout/printf。另外,這就是我所做的,我使用了一個文件,但在C++中,它仍然需要我使用cout(至少我知道),這就是爲什麼我在這裏問。 – akirinrin

0

可以使用的ofstream:

std::ofstream ofs("file.txt"); 
ofs << "text"; // This line outputs "text" to file 
0

可用在C使用fwrite顯示您輸出/ C++

例如:

char buffer[] = "hello world" 

fwrite (buffer , sizeof(char), sizeof(buffer), stdout);