C语言中用字符数组作函数参数,编程实现在从键盘输入的字符串(假设长度小于80)中查找与指定的子串,并输出该子串在字符串中首次出现的位置,如果该字符不存在,则输出"Not found!"。
时间: 2024-03-12 18:46:53 浏览: 54
好的,以下是C语言的实现代码:
```c
#include <stdio.h>
#include <string.h>
void findSubstring(char str[], char sub[]) {
int len1 = strlen(str);
int len2 = strlen(sub);
int pos = -1;
for (int i = 0; i <= len1 - len2; i++) {
int found = 1;
for (int j = 0; j < len2; j++) {
if (str[i+j] != sub[j]) {
found = 0;
break;
}
}
if (found) {
pos = i;
break;
}
}
if (pos == -1) {
printf("Not found!\n");
} else {
printf("Substring found at position %d\n", pos);
}
}
int main() {
char str[81];
char sub[81];
printf("Enter a string (max length 80): ");
fgets(str, 81, stdin);
str[strcspn(str, "\n")] = '\0'; // 去掉fgets读入的换行符
printf("Enter a substring to find: ");
fgets(sub, 81, stdin);
sub[strcspn(sub, "\n")] = '\0'; // 去掉fgets读入的换行符
findSubstring(str, sub);
return 0;
}
```
在这个程序中,我们首先定义了一个 `findSubstring` 函数,它接受两个字符数组作为参数,分别表示要查找的字符串和子串。接着,我们计算出字符串和子串的长度,并使用嵌套的循环来逐个比较字符串的每个子串是否与子串相等。如果找到了匹配的子串,我们记录下它在原字符串中的位置,并退出循环。最后,如果没有找到子串,我们输出 "Not found!",否则输出找到的位置。
在主函数中,我们通过 `fgets` 函数从键盘读取字符串和子串,并将它们传递给 `findSubstring` 函数进行查找。注意,由于 `fgets` 函数会读入换行符,我们需要使用 `strcspn` 函数将其替换为字符串结束符。
阅读全文