每日一道c语言编程题,第二十五题,判断子串是否出现及所在位置

编写一个程序,输入一个字符串和一个子串,判断该子串是否在字符串中出现,如果出现则输出其出现的位置。

#include <stdio.h>

#include <string.h>

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;

}

  1. 首先在主函数中定义字符串str、子串sub和指针p,以及整型变量pos,用于记录子串出现的位置。

  2. 然后使用fgets函数分别读取用户输入的字符串和子串,并在结尾处手动加上'\0',以确保字符串的结尾正确。

  3. 接下来使用strstr函数在字符串中查找子串的位置。如果找到了,则输出其出现的位置,并继续查找下一个位置,直到字符串中不再出现子串。如果未找到,则输出“子串未出现”这个提示信息。

  4. 最后在主函数的末尾返回0,表示程序正常结束。

需要注意的是,在使用fgets函数读取字符串时,由于fgets函数会把换行符也读入字符串中,因此我们需要在字符串结尾处手动加上'\0',以确保字符串的结尾正确。此外,由于字符串中可能存在空格或其他特殊字符,因此我们需要使用更加严谨的方法来判断子串是否出现在字符串中,例如使用strstr函数。


原文链接:,转发请注明来源!