#include <stdio. h> int msearch(char *s, char ch) { int i=0; while( s[i]!='\0') { if( s[i]==ch) return i; i--; /*$ERROR$*/ } return -1; } void main() { char s[50], ch; int pot; printf("请输入一个字符串:\n"); getchar(s); /*$ERROR$*/ printf("请输入要查找的字符:\n"); scanf("%c",&ch); pot=msearch(s[50], ch); /*$ERROR$*/ if( pot!=-1) printf("%c这个字符的下标是%d\n", ch, pot); else printf("查找不成功!\n"); }
时间: 2024-03-31 18:36:11 浏览: 69
这段代码有很多错误,我来逐个指出并解释一下:
1. 在第1行,头文件名应该是<stdio.h>,而不是<stdio. h>。
2. 在第2行,函数名应该是m_search,而不是msearch。这个错误可能是笔误造成的。
3. 在第3行,函数应该返回一个int类型的值,而不是空。
4. 在第4行,应该加上大括号来表示函数体的开始。
5. 在第5行,应该把i的初始值设为-1,而不是0。
6. 在第6行,应该使用while循环来遍历字符串s,而不是if语句。
7. 在第7行,应该判断当前字符是否等于ch,如果是则返回它的下标i。
8. 在第8行,应该将i减1,而不是加1,以便在后面能够正确遍历字符串。
9. 在第9行,应该将函数体的结束括号放在最后。
10. 在第11行,应该将主函数的返回值类型改为int,而不是void。
11. 在第12行,应该声明一个字符数组s,而不是一个字符指针。
12. 在第13行,应该使用gets函数来读取字符串s,而不是getchar函数。
13. 在第14行,应该使用printf函数来打印提示信息,而不是注释。
14. 在第15行,应该使用scanf函数来读取字符ch,而不是注释。
15. 在第16行,应该将s[50]改为s,以便传递整个字符串给函数。
16. 在第16行,应该将&ch改为ch,以便传递字符给函数。
17. 在第16行,应该将msearch函数的调用结果赋值给pot。
18. 在第19行,应该使用printf函数来打印查找结果,而不是注释。
19. 在第20行,应该使用else语句来处理查找失败的情况。
综上所述,修正后的代码应该是这样的:
阅读全文