#include<stdio.h> int find_char(const char*str1,const char*str2)//在字符串str1中找字符串str2的函数 { const char*p1=str1;//定义一个指针指向str1 const char*p2=str2;//定义一个指针指向str2 int pos=-1;//定义个位置变量,存str2在str1的位置 for(p1=str1;*p1!='\0';p1++) { if(*p1==*p2) { if(pos==-1) { pos=p1-str1; } p2++; if(*p2=='\0') { return pos; } else { p2=str2; if(pos!=-1) { p1=str1+pos; } pos=-1; } } } return -1; } int main() { char str1[100],str2[100]; printf("Input str1:\n"); gets(str1); printf("Input str2:\n"); gets(str2); printf("position=%d\n",find_char(str1,str2)); return 0; }代码为什么错了
时间: 2024-01-28 13:03:26 浏览: 57
SeqList.h #include <stdio.h> //包含标准输入输出流的头文件 #include <assert.h
在C语言中,函数声明需要放在程序开头,否则编译器可能无法识别函数。可以将 `find_char` 函数的声明放在 `main` 函数前面,如下所示:
```
#include<stdio.h>
int find_char(const char* str1,const char* str2);
int main() {
// 程序主体
}
int find_char(const char* str1,const char* str2) {
// 函数体
}
```
此外,使用 `gets` 函数读取字符串容易导致缓冲区溢出,因此建议使用 `fgets` 函数代替,例如:
```
fgets(str1, 100, stdin);
fgets(str2, 100, stdin);
```
阅读全文