2010-03-21 102 views
1

我想獲得更多的熟練和我的C編程,我試圖測試顯示輸入流中的字符,而在獲取該字符的循環內。我正在使用getchar方法。爲什麼在Visual Studio C編譯器中引發此異常?

我在我的代碼中存在printf語句時出現異常。 (如果我在此函數中註釋掉printf行,則不會拋出異常)。

例外:0000005:訪問 衝突讀取位置0x00002573在 firstOS.exe 0x611c91ad(msvcr90d.dll)未處理的異常。

這是代碼...任何想法?謝謝。

PS。我正在使用stdio.h庫。

/*getCommandPromptNew - obtains a string command prompt.*/ 
void getCommandPromptNew(char s[], int lim){  

    int i, c; 

    for(i=0; i < lim-1 && (c=getchar())!=EOF && c!='\n'; ++i){ 
     s[i] = c; 
     printf('%s', c); 
    } 

}

回答

4

嘗試改變:

printf('%s', c); 

printf("%c", c); 

如果您希望在最後,你需要循環的打印整個字符串以結束它字符爲:

s[i] = 0; 

,然後你可以打印爲:

printf("%s", s); 
+0

謝謝!很棒。 – 2010-03-21 04:27:12

1

,你應該檢查的第一件事是:你分配給S []或不是記憶。
第二:printf(「%c」,c); //我可以假設%s - 正在等待以null結尾的字符串。
第三:在printf()中可能存在「」vs「」的問題。

+0

謝謝您的意見。 – 2010-03-21 04:28:11

相關問題