簡體   English   中英

C:在字符串中查找特定字符

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM