[英]C: Finding a specific character in a string
我正在嘗試編寫一個程序來搜索字符串中特定字符的第一次出現。 但無論我在數字中輸入什么字符,程序返回的都是最后一個字符的數字。
int where (char *str, char ltr);
int main () {
char word [80];
char letter;
printf("Type in a word: ");
scanf("%s", word);
printf("Type in a character: ");
scanf("%s", letter);
printf("%d", where(word, letter));
}
int where (char *str, char ltr){
int i = 0;
while(i < strlen(str)){
if(ltr == str[i]){
break;
}
i++;
}
return i;
}
問題是這里
scanf("%s", letter);
是未定義的行為,因為它需要一個指向字符的指針,但你給它一個字符。 %s
說明符用於讀取字符串,而不是單個字符。 您的編譯器應該在此處警告您類型不匹配。
相反,將其更改為:
scanf(" %c", &letter);
%c
用於讀取單個字符,並使用前導空格使其忽略輸入中的任何前導空格(例如在單詞后輸入的換行符)。
您還應該更改scanf("%s", word);
到scanf("%79s", word);
為了避免用戶輸入很長的單詞時出現未定義的行為(這會將單詞的長度限制為緩沖區的大小)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.