#include<stdio.h> int find_char(const char*str,const char ch) { const char*p; for(p==str;*p!='\0';p++) { if(*p=='ch') return p-str; } return -1; } int main() { char str[100],ch; printf("Input str:\n"); gets(str); printf("Input ch:\n"); ch=getchar(); printf("position=%d\n",find_char(str,ch)); return 0; }错误在哪
时间: 2023-11-08 14:05:39 浏览: 92
这段代码中存在以下错误:
1. 在 find_char 函数中,指针变量 p 没有被正确初始化,应该改为 `const char *p = str;`。
2. 在 if 语句中,应该使用 ch 而不是 'ch',因为 'ch' 是一个字符数组,而 ch 是一个字符变量。因此,if 语句应该改为 `if (*p == ch)`。
3. 在主函数中,gets 函数已经被弃用,应该改为使用 fgets 函数。此外,在输入 ch 时,应该在输入后加上一个 getchar(),以消耗输入缓冲区中的换行符。
改正后的代码如下:
```
#include <stdio.h>
int find_char(const char* str, const char ch) {
const char* p = str;
for (; *p != '\0'; p++) {
if (*p == ch)
return p - str;
}
return -1;
}
int main() {
char str[100], ch;
printf("Input str:\n");
fgets(str, sizeof(str), stdin);
printf("Input ch:\n");
ch = getchar();
getchar(); // 消耗输入缓冲区中的换行符
printf("position=%d\n", find_char(str, ch));
return 0;
}
```
阅读全文
相关推荐



















