空变量的问题

问题描述 投票:0回答:1

我在功能上遇到问题,通常它返回键盘上按下的键,因此它返回我写的这个帽子的字符:

void Get ( char ch)
{       
        printf("choisir le touche que vous convient : /n ");
        ch=fgetc(stdin);
        printf("%c is pressed ",ch);
        scanf ("%c" , &ch);
        printf("%c is pressed ",ch);
}

并且 ch 全局变量被声明为静态字符。

static char ch ;
int main ()
{   Get(ch) ;
    printf ("%c" , ch ) ;
    switch (ch)
    {
    case '1':
        printf ( "1 ");
        break ; 
    case '2':
        printf ( "2 ");
        break ; 
 }

问题是当我调用这个函数时,值总是 NULL 谁能帮帮我吗

c
1个回答
0
投票

除了 @kadina 发布的内容之外,您还可以将指向字符的指针传递给您的

Get
函数。

void Get(char *ch) {
    scanf("%c\n", ch);
}

在 main 中,我们声明一个类型为

ch
的变量
char
,因为不需要全局变量,然后将指向该变量的指针传递给
Get

int main(void) {
    char ch;
    Get(&ch);
}

希望这可以帮助您指明正确的方向。

注意:以这种方式调用

scanf
会放弃任何测试返回值的机会,从而判断I/O是否成功。

© www.soinside.com 2019 - 2024. All rights reserved.