鱼C论坛

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

C语言

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

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

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

x
#include<stdio.h>

void match(char *s[],char ch)
{
    int i;
    for(i = 0; ch != *(s[0]+i); i++)
    {
        ;
    }
    printf("%s",*(s[0]+i-1));
}

int main()
{
    char *s[1];
    char ch;
    printf("请输入字符串:");
    scanf("%s",s[0]);
    printf("请输入字符:");
    scanf("%c",&ch);

    match(s[0],ch);

}

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

使用道具 举报

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

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

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

    match(s,ch);
    return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

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

我就是想使用指针数组来实现这个,如果就定义指针数组的话怎么实现这个?感谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

void match(char *s[],char ch)
{
    int i;
    for(i = 0; (ch != *(s[0]+i) && *(s[0]+i) != '\0'); i++)
    {
        ;
    }
    printf("%s",s[0]+i);
}

int main()
{
        char str[100];
    char *s[1]={str};
    char ch;
    printf("请输入字符串:");
    scanf("%s",s[0]);
    getchar();//去掉回车 
    printf("请输入字符:");
    scanf("%c",&ch);
        
    match(s,ch);

}

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



#if 0 
#include<stdio.h>
#include<string.h>
void match(char *s,char ch)
{
    int i;
    for(i = 0; (ch != *(s+i) && *(s+i) != '\0'); i++)
        ;
    if (i < strlen(s)) printf("%s\n",s+i);
    else printf("没找到!\n");
}

int main()
{
    char s[100];
    char ch;
    printf("请输入字符串:");
    scanf("%s",s);
    printf("输入的字符串是:%s\n",s);
    printf("请输入字符:");
    getchar();//去掉回车 
    scanf("%c",&ch);
    printf("输入的字符是:%c\n",ch);
    match(s,ch);
        return 0;
}

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

使用道具 举报

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

不管你用指针还是指针数组,
有一点需要知道,指针必须初始化,也就是赋值,没有进行初始化,是不能使用的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-15 06:31

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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