gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 14:35:01 24 4
gpt4 key购买 nike

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

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); 以避免在用户输入一个非常长的单词(这将单词的长度限制为缓冲区的大小)。

关于C:查找字符串中的特定字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58730902/

24 4 0
文章推荐: c - 堆栈字符串上 strtok_r 中的段错误
文章推荐: c - 链表: C: does not store the values I am looking for
文章推荐: c# - .NET 4+ 中 get 存储过程架构的优势?
文章推荐: C 中结构的副本