编写一个程序,输入一个字符串和一个子串,判断该子串是否在字符串中出现,如果出现则输出其出现的位置。
#include
#include
int main()
{
char str[100], sub[20];
char *p;
int pos = 0;
printf("请输入一个字符串:");
fgets(str, 100, stdin);
str[strlen(str)-1] = '\0';
printf("请输入一个子串:");
fgets(sub, 20, stdin);
sub[strlen(sub)-1] = '\0';
p = strstr(str, sub);
while(p != NULL)
{
pos = p - str + 1;
printf("子串出现的位置为:%d\n", pos);
p = strstr(p+1, sub);
}
if(pos == 0)
{
printf("子串未出现\n");
}
return 0;
}
首先在主函数中定义字符串str、子串sub和指针p,以及整型变量pos,用于记录子串出现的位置。
然后使用fgets函数分别读取用户输入的字符串和子串,并在结尾处手动加上'\0',以确保字符串的结尾正确。
接下来使用strstr函数在字符串中查找子串的位置。如果找到了,则输出其出现的位置,并继续查找下一个位置,直到字符串中不再出现子串。如果未找到,则输出“子串未出现”这个提示信息。
最后在主函数的末尾返回0,表示程序正常结束。
需要注意的是,在使用fgets函数读取字符串时,由于fgets函数会把换行符也读入字符串中,因此我们需要在字符串结尾处手动加上'\0',以确保字符串的结尾正确。此外,由于字符串中可能存在空格或其他特殊字符,因此我们需要使用更加严谨的方法来判断子串是否出现在字符串中,例如使用strstr函数。
领取专属 10元无门槛券
私享最新 技术干货