鱼C论坛

 找回密码
 立即注册
查看: 1613|回复: 8

[已解决]救救孩子吧

[复制链接]
发表于 2020-11-16 13:57:44 | 显示全部楼层 |阅读模式
5鱼币
最佳答案
2020-11-16 13:57:45
  1. char *match(char *s, char ch)
  2. {
  3.         char * result = NULL;
  4.         while (*s != NULL)
  5.         {
  6.                 if (*s == ch)
  7.                 {
  8.                         result = s;
  9.                 }
  10.                 *s++;
  11.         }
  12.         return result;
  13. }
复制代码
1.PNG
2.PNG
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-11-16 13:57:45 | 显示全部楼层    本楼为最佳答案   
  1. char *match(char *s, char ch)
  2. {
  3.         char * result = NULL;
  4.         while (*s != NULL)
  5.         {
  6.                 if (*s == ch)
  7.                 {
  8.                         result = s;
  9.                 }
  10.                 *s++;
  11.         }
  12.         return result;
  13. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-11-16 16:33:18 | 显示全部楼层
本帖最后由 风过无痕1989 于 2020-11-16 17:50 编辑

下面这个程序,找到字符后输出是正常的,但没有找到字符,输出是空行,而不是“Not Found"

  1. #include <stdio.h>
  2. char *match(char *s, char ch);
  3. int main(void)
  4. {
  5.         char ch, str[80], *p = NULL;
  6.         scanf("%s", str);
  7.         getchar();               /*跳过输入字符串和输入字符之间的分隔符*/
  8.         ch = getchar();          /*输入一个字符*/
  9.         p = match(str, ch);      /*调用函imatch()*/
  10.         if (p != NULL)            /*找到字符ch*/
  11.         {
  12.                 printf("%s\n", p);  // 输出找到字符之后的字符串
  13.         }
  14.         else
  15.         {
  16.                 printf("Not Found.\n");
  17.                 return 0;
  18.         }
  19. }

  20. char *match(char *s, char ch)
  21. {
  22.         while (*s != NULL)
  23.         {
  24.                 if (*s == ch)
  25.                 {
  26.                         break;
  27.                         return s;
  28.                 }
  29.                 *s++;
  30.         }
  31. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-11-16 16:50:45 From FishC Mobile | 显示全部楼层
风过无痕1989 发表于 2020-11-16 16:33
下面这个程序,找到字符后输出是正常的,但没有找到字符,输出是乱码,而不是“Not Found",调试了好几个小 ...

不是
我不知道怎么找到最后一个字符
比如 program找到的是第二个r
输出ram
乱码最后应该要加return null
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-11-16 16:58:34 | 显示全部楼层
天神下饭... 发表于 2020-11-16 16:50
不是
我不知道怎么找到最后一个字符
比如 program找到的是第二个r

正像你说的,加个 return null ,程序就正常了
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-11-16 17:06:23 | 显示全部楼层
不行,加了以后,无论找到找不到,输出都是 Not Found
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-11-16 17:13:02 From FishC Mobile | 显示全部楼层
风过无痕1989 发表于 2020-11-16 17:06
不行,加了以后,无论找到找不到,输出都是 Not Found

char *match(char *s,char ch)
{
    while(*s!='\0')
        if(*s==ch)
            return (s);
        else
            s++;
    return(NULL);
}
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-11-16 17:17:00 From FishC Mobile | 显示全部楼层
风过无痕1989 发表于 2020-11-16 17:06
不行,加了以后,无论找到找不到,输出都是 Not Found

但是这样写你输入program
输出就是rogram了
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-11-16 17:57:24 | 显示全部楼层
天神下饭... 发表于 2020-11-16 17:17
但是这样写你输入program
输出就是rogram了

怎么改都不对,上面的程序,我改回来了,找到了,输了正常,没找到,输出空行
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-7-12 17:57

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表