首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

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

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

#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函数。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20230313A015DD00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券