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

我正在尝试编写一个程序,该程序搜索字符串中特定字符的首次出现。但是无论我输入的数字是什么字符,程序都会返回最后一个字符的数字。

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;
}
Venus0808 回答:C:在字符串中查找特定字符

问题在于这里

scanf("%s",letter);

是未定义的行为,因为它需要一个指向字符的指针,但是您给它赋予了字符。 %s说明符用于读取字符串,而不是单个字符。您的编译器应在此警告您有关类型不匹配的信息。

相反,将其更改为此:

scanf(" %c",&letter);

%c用于读取单个字符,并使用前导空格使它忽略输入中的任何前导空格(例如在输入单词后输入换行符)。

您还应该将scanf("%s",word);更改为scanf("%79s",word);,以避免当用户输入一个很长的单词时出现不确定的行为(这将单词的长度限制为缓冲区的大小)。

本文链接:https://www.f2er.com/3151947.html

大家都在问