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: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;
} sunrise085 发表于 2020-4-15 16:20
我就是想使用指针数组来实现这个,如果就定义指针数组的话怎么实现这个?感谢 #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 老牛来学习 发表于 2020-4-15 16:26
我就是想使用指针数组来实现这个,如果就定义指针数组的话怎么实现这个?感谢
不管你用指针还是指针数组,
有一点需要知道,指针必须初始化,也就是赋值,没有进行初始化,是不能使用的
页:
[1]