注册 登录
编程论坛 C语言论坛

自定义函数 萌新求助

yujiangyan 发布于 2020-06-02 23:07, 2050 次点击
//自行定义一个函数,使自己定义的函数具有gets()的功能,但是我这个最后不能输出东西,请大佬们帮忙看一下,谢谢赐教!
#include<stdio.h>
void my_gets(char a)
{
    printf("请输入字符串,以回车结束\n");
    while(1)
    {
        scanf("%c",&a);
        if(a='\n')
        break;   
    }
}
int main()
{

    char c;
    my_gets(c);
printf("%c",c);
   
}
4 回复
#2
ditg2020-06-02 23:30
忽略各类检测的情况下:

char *my_gets(char *s)
{
    char *p = s;
    int c;
   
    while ((c = getchar()) != EOF)
        if (c == '\n')
            break;
        else
            *p++ = c;
    *p = '\0';
    return s;
}
#3
JabinZ2020-06-02 23:51
程序代码:

#include<stdio.h>
void my_gets(char a) // 1. 这里接收的是局部变量,函数内部修改 `a`变量 不会影响main函数中的 `c`变量
{
    printf("请输入字符串,以回车结束\n");
    while(1)
    {
        // 按照你目前的设计,就算你把 (1,2)问题都修改了,这函数也只能把最后读到'\n' 字符赋值到 main函数中的 `c`变量, 所以你也看不到什么值
        scanf("%c",&a);
        if(a='\n') // 2. 这量是要判断 a 等于 '\n' 不是要赋值  (== 是等于) (= 是赋值)
        break;   
    }
}
int main()
{

    char c;    // 变量记得初始化
    my_gets(c); // 你这里的本意是要读 `字符串` 吧, 但你传的是 `字符`
printf("%c",c);
   // 这里记得写 return 0;
}


2楼有答案,我就不写答案了
#4
yujiangyan2020-06-03 16:08
回复 3楼 JabinZ
谢谢指教
#5
JabinZ2020-06-03 20:47
回复 4楼 yujiangyan
客气
1