注册 登录
编程论坛 C++教室

关于通过指针引用字符串的一些问题。

幻想乡流浪者 发布于 2015-06-06 15:44, 5116 次点击
void shuru(char *p1,char *p2)
{
    char a[M],b[M];
    gets_s(a);
    gets_s(b);
    p1=a;
    p2=b;
}

void shuchu(char *p1,char *p2)
{
    puts(p1);
    puts(p2);
}
int main()
{
    char a[M]="I love china!";
    char b[M]="I am a student";
    //char *p1,*p2;
    int n=0;
    printf("请输入要进入的程序(1-7):");
    scanf("%d",&n);
    while(n!=7)
    {
        switch(n)
        {
        case 1: shuru(a,b); break;
        case 2: shuchu(a,b);break;
        case 3: found(a,b); break;
        case 4: bijiao(a,b);break;
        case 5: lianjie(a,b);break;
        case 6: lenth(a);break;
        case 7: ;break;
        }
        scanf("%d",&n);
    }
    return 0;
}
我写的是这样,但是调试的时候出现了很多问题QAQ;
1、调用输入函数后,在调用输出函数,结果没反应;
只有本站会员才能查看附件,请 登录

2、要连续调用两次输出函数才能实现;
希望能指点一下。
13 回复
#2
幻想乡流浪者2015-06-06 16:13
回复 2楼 边小白
。。。我好像走错片场了@_@
#3
诸葛欧阳2015-06-06 16:27
首先函数定义不够,第二,while里面n不会等于7,第三,指针使用有误
#4
幻想乡流浪者2015-06-06 16:55
回复 4楼 诸葛欧阳
while里面是当n等于7时结束程序,指针错误是指输入函数的指针吗?
#5
幻想乡流浪者2015-06-06 16:56
回复 4楼 诸葛欧阳
函数在头文件里面都定义了的。
#6
幻想乡流浪者2015-06-06 17:04
还有用断点之后发现我只能返回第一个字符串的内容,第二个不行。
#7
诸葛欧阳2015-06-06 19:22
以下是引用幻想乡流浪者在2015-6-6 16:55:31的发言:

while里面是当n等于7时结束程序,指针错误是指输入函数的指针吗?

那你写case7干嘛
#8
诸葛欧阳2015-06-06 19:24
shuru()这个函数传入空指针就行,你把数组传入会改变数组内容
#9
wmf20142015-06-06 19:47
很显然,对指针的理解不到位。你的shuru函数不管传什么指针,都不会影响你在main函数里定义的两个字符串。另应该在输入函数中先清空输入缓冲区,否则第一个gets函数将收不到值,所以shuru函数修改如下,应该达到你的目的:
程序代码:
void shuru(char *p1,char *p2)
{
    flushall();
    gets_s(p1);
    gets_s(p2);
}


 
#10
幻想乡流浪者2015-06-06 21:09
回复 8楼 诸葛欧阳
额,那是因为第七个选项是结束程序,调试的时候会输出各个模块的功能,第七个是结束,所以写了case 7.
#11
幻想乡流浪者2015-06-06 21:18
回复 10楼 wmf2014
不行,出现了新的问题QAQ。
只有本站会员才能查看附件,请 登录
#12
wmf20142015-06-06 21:25
void shuru(char *p1,char *p2)
{
    flushall();
    gets(p1);
    gets(p2);
}

#13
幻想乡流浪者2015-06-07 01:00
我有试过,结果还是出问题了,按系统的提示,改成了这样:
void shuru(char *p1,char *p2)
{
    _flushall();
    gets_s(p1);
    gets_s(p2);
}
1