老牛来学习 发表于 2020-4-15 16:04:10

C语言

#include<stdio.h>

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

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

    match(s,ch);

}

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

sunrise085 发表于 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;//你所定义的是指针数组,
    s=a;//指针不能直接使用,因为只定义了指针,而没有赋值的话,指针并没有被分配空间
    char ch;
    printf("请输入字符串:");
    scanf("%s",s);
    getchar();//因为下面需要用scanf读%c,所以需要清除缓冲区的回车字符
    printf("请输入字符:");
    scanf("%c",&ch);
    printf("%c\n",ch);

    match(s,ch);
    return 0;
}

老牛来学习 发表于 2020-4-15 16:26:57

sunrise085 发表于 2020-4-15 16:20


我就是想使用指针数组来实现这个,如果就定义指针数组的话怎么实现这个?感谢

Cool_Breeze 发表于 2020-4-15 16:36:13

#include<stdio.h>

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

int main()
{
        char str;
    char *s={str};
    char ch;
    printf("请输入字符串:");
    scanf("%s",s);
    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;
    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

sunrise085 发表于 2020-4-15 16:46:34

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

不管你用指针还是指针数组,
有一点需要知道,指针必须初始化,也就是赋值,没有进行初始化,是不能使用的
页: [1]
查看完整版本: C语言