我明白當我更明確地使用getchar()
,putchar()
和while循環時會發生什麼;然而,我只是想知道,當下面的代碼執行(幕後)時,輸入字符串的存儲和處理是否相同?是否每個字符都被存儲爲「輸入」數組的一個元素? scanf
如何做到這一點?等等。這個字符串是如何存儲和打印的?
#include <stdio.h>
int main(void)
{
char typed[500];
scanf("%[^\tEOF]", &typed);
printf("%s", typed);
return(0);
}
謝謝。
hello bufferoverrun – knittl 2011-12-25 08:36:55
'void main(void)'是壞的。雖然許多編譯器都允許它,但它不包含在C標準中,所以它不是便攜式的。我認爲C++標準甚至禁止它,因爲它要求main有返回類型'int'(但我避免C++足以不確定)。 – Lion 2011-12-25 09:13:02
1998年的C++標準(可能是其修正案和2011年標準)在§3.6.1中說:_實現不應該預定義'main'函數。該功能不得超載。應該有 有一個int類型的返回類型,否則它的類型是實現定義的。 所有實現 應允許以下兩個'main'定義: int main(){/ * ... * /}' and 'int main(int argc,char * argv []){/ * ... * /}'...... – 2011-12-25 09:28:12