我正在編寫一個代碼來檢查輸入 現在我需要做的是檢查用戶是否鍵入「read_set a」... 但它並不重要,我想要什麼做..在c中打印字符串中的未知錯誤
如果輸入爲: 「read_seta,123」,它顯示與沒有錯誤
如果輸入爲: 「read_set一個,123」,它顯示與BUGS
代碼是:
input[100];
scanf("%s",input);
printf("%s",input);
read_set(input)
int read_set(char input[]){
printf("%c\n\n",input[8]);
printf("%s",input);
}
在
第一的printf
,我想要的代碼顯示空間「」,但它並不 ,而是保持它打印性格怪異,每次(每次隨機字符)
,也秒 printf根本不顯示
有什麼問題?
你的scanf正在讀「read_set」,當您嘗試訪問指數10,這是不確定的。 I.E.一次只能讀入一個字符串,如果要讀取「read_set a」,則需要讀取一個字符串,然後輸入一個字符並將其附加到該字符串前面的空格處。即使那樣,那只有10個字符,所以訪問索引10仍然是未定義的(索引9將包含'a') – AndyG
我更新了文章 –
@WaseemGabour的確,您的問題在於'scanf()'不符合您的想法它確實如此。一般來說,你應該完全避免這個可怕的功能。爲了逐行獲取用戶輸入,請考慮使用'fgets()'來代替。 – 2014-01-21 23:58:01