2012-07-20 135 views
-2

這是我的問題。我輸入一些輸入後立即輸入程序執行。我有些如何發現問題是由於我使用的for循環造成的。這是代碼。程序執行for循環後 - C

#include<stdio.h> 
#include<stdlib.h> 
#include<string.h> 

main(){ 


char myString[100]; 
char myChar = myString[6]; 
int i; 

for(i=0; i<=100; i++){ 
    scanf("%s", myString[i]); 
} 

printf("%c\n", myChar); 
system("pause"); 

} 
+0

你有什麼實際問題? – 2012-07-20 11:20:08

+0

你是什麼意思「鍵入一些輸入並打回車」? – Femaref 2012-07-20 11:20:15

+0

在編寫代碼之前,你應該真的閱讀一本關於C的書。 – m0skit0 2012-07-20 11:26:19

回答

5

您正在嘗試讀取101個字符串%s,但您爲100個字符分配了空間。您將字符而不是字符指針傳遞給scanf,導致崩潰。

如果你想讀100個字符,你應該在格式行中傳遞%cscanf調用的參數部分地址:

scanf("%c", &myString[i]); 

你也應接受<取代<= ,或分配myString[101]

如果你正在尋找得到一個字符串,調用scanf一次,而不是在一個循環:

scanf("%99s", myString); // myString is the same as &myString[0] 

您還讀6個字符,你將任何數據到字符數組之前。該值在for循環後不會改變。

+1

他甚至試圖讀取101個字符串。 – 2012-07-20 11:22:36

+0

那麼我如何從用戶那裏獲取字符串呢? – Srivathsan 2012-07-20 11:24:09

+0

@JoachimPileborg感謝您的更正! – dasblinkenlight 2012-07-20 11:25:03

2

您正在使用字符串格式(%s),但傳遞字符myString[i]。這是不好的。

0

一個問題可能是你的for循環:

for(i=0; i<=100; i++){ 
    scanf("%s", myString[i]); 
} 

你只有100元,但訪問101

問候 羅傑

0

你應該寫:

for(i = 0; i < 100; i++) 
{ 
    scanf("%c", &myString[i]); 
} 

或者:

scanf("%s", &myString); 

順便說一句,下面的命令:

char myChar = myString[6]; 

應該放置在名爲 'scanf函數' 之後,否則mychar永遠是 'C'