Онлайн компилятор C

#include <stdio.h> int find_char(char s[], char c){ int i = 0; int counter = 0; while(s[i]!='.'&&s[i]!= '\0'&&s[i]!='\n'){ if(s[i] == c){ counter++; } i++; } return counter; } int main() { char s[] = "banana."; char a= 'n'; printf("%d", find_char(s,a)); return 0; }
这段代码定义了一个函数 `find_char`,它统计字符串 `s` 中字符 `c` 出现的次数,但遇到句号、空字符或换行符时停止。主函数测试了字符串 `"banana."` 中字符 `'n'` 的出现次数,输出结果为 2。

- 函数中的循环条件 `s[i]!='.'` 导致它遇到句点就停止计数,但你的字符串末尾正好有句点,所以它只统计了句点之前的字符。如果字符串中没有句点,函数会正常统计到字符串结束。
- 注意你的函数名是 `find_char`,但实际功能是计数,而不是查找位置。如果希望它返回第一次出现的位置,需要修改逻辑;如果保持计数功能,函数名可以更贴切地改为 `count_char`。