鱼C论坛

 找回密码
 立即注册
查看: 2298|回复: 4

C语言

[复制链接]
发表于 2020-4-15 16:04:10 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
  1. #include<stdio.h>

  2. void match(char *s[],char ch)
  3. {
  4.     int i;
  5.     for(i = 0; ch != *(s[0]+i); i++)
  6.     {
  7.         ;
  8.     }
  9.     printf("%s",*(s[0]+i-1));
  10. }

  11. int main()
  12. {
  13.     char *s[1];
  14.     char ch;
  15.     printf("请输入字符串:");
  16.     scanf("%s",s[0]);
  17.     printf("请输入字符:");
  18.     scanf("%c",&ch);

  19.     match(s[0],ch);

  20. }

  21. //我的设想是输入一段字符串,输入一个字符,之后传到march函数中从字符串的第一个ch开始输出,比如输入abc和b,输出bc。用这个指针数组来实现,是哪里有问题吗??
  22. //补充一下,因为指针数组可以不用预先定义字符串长度,所以想试一下怎么使用,但是好像这个代码有点问题。。。
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-4-15 16:20:36 | 显示全部楼层
本帖最后由 sunrise085 于 2020-4-15 16:25 编辑
  1. #include<stdio.h>

  2. void match(char *s,char ch)
  3. {
  4.     int i;
  5.     for(i = 0; ch != *(s+i); i++)
  6.     {
  7.         ;
  8.     }
  9.     printf("%s",(s+i));//这里为什么要-1,另外,%s输出需要给一个地址,而不是一个值,所以需要去掉*号
  10. }

  11. int main()
  12. {
  13.     char *s,a[100];//你所定义的是指针数组,
  14.     s=a;//指针不能直接使用,因为只定义了指针,而没有赋值的话,指针并没有被分配空间
  15.     char ch;
  16.     printf("请输入字符串:");
  17.     scanf("%s",s);
  18.     getchar();//因为下面需要用scanf读%c,所以需要清除缓冲区的回车字符
  19.     printf("请输入字符:");
  20.     scanf("%c",&ch);
  21.     printf("%c\n",ch);

  22.     match(s,ch);
  23.     return 0;
  24. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2020-4-15 16:26:57 | 显示全部楼层

我就是想使用指针数组来实现这个,如果就定义指针数组的话怎么实现这个?感谢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-15 16:36:13 | 显示全部楼层
  1. #include<stdio.h>

  2. void match(char *s[],char ch)
  3. {
  4.     int i;
  5.     for(i = 0; (ch != *(s[0]+i) && *(s[0]+i) != '\0'); i++)
  6.     {
  7.         ;
  8.     }
  9.     printf("%s",s[0]+i);
  10. }

  11. int main()
  12. {
  13.         char str[100];
  14.     char *s[1]={str};
  15.     char ch;
  16.     printf("请输入字符串:");
  17.     scanf("%s",s[0]);
  18.     getchar();//去掉回车
  19.     printf("请输入字符:");
  20.     scanf("%c",&ch);
  21.        
  22.     match(s,ch);

  23. }

  24. //我的设想是输入一段字符串,输入一个字符,之后传到march函数中从字符串的第一个ch开始输出,比如输入abc和b,输出bc。用这个指针数组来实现,是哪里有问题吗??
  25. //补充一下,因为指针数组可以不用预先定义字符串长度,所以想试一下怎么使用,但是好像这个代码有点问题。。。



  26. #if 0
  27. #include<stdio.h>
  28. #include<string.h>
  29. void match(char *s,char ch)
  30. {
  31.     int i;
  32.     for(i = 0; (ch != *(s+i) && *(s+i) != '\0'); i++)
  33.         ;
  34.     if (i < strlen(s)) printf("%s\n",s+i);
  35.     else printf("没找到!\n");
  36. }

  37. int main()
  38. {
  39.     char s[100];
  40.     char ch;
  41.     printf("请输入字符串:");
  42.     scanf("%s",s);
  43.     printf("输入的字符串是:%s\n",s);
  44.     printf("请输入字符:");
  45.     getchar();//去掉回车
  46.     scanf("%c",&ch);
  47.     printf("输入的字符是:%c\n",ch);
  48.     match(s,ch);
  49.         return 0;
  50. }

  51. //我的设想是输入一段字符串,输入一个字符,之后传到march函数中从字符串的第一个ch开始输出,比如输入abc和b,输出bc。用这个指针数组来实现,是哪里有问题吗??
  52. //补充一下,因为指针数组可以不用预先定义字符串长度,所以想试一下怎么使用,但是好像这个代码有点问题。。。
  53. #endif
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-15 16:46:34 | 显示全部楼层
老牛来学习 发表于 2020-4-15 16:26
我就是想使用指针数组来实现这个,如果就定义指针数组的话怎么实现这个?感谢

不管你用指针还是指针数组,
有一点需要知道,指针必须初始化,也就是赋值,没有进行初始化,是不能使用的
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-3 17:28

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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