我在功能上遇到问题,通常它返回键盘上按下的键,因此它返回我写的这个帽子的字符:
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 谁能帮帮我吗
除了 @kadina 发布的内容之外,您还可以将指向字符的指针传递给您的
Get
函数。
void Get(char *ch) {
scanf("%c\n", ch);
}
在 main 中,我们声明一个类型为
ch
的变量 char
,因为不需要全局变量,然后将指向该变量的指针传递给 Get
。
int main(void) {
char ch;
Get(&ch);
}
希望这可以帮助您指明正确的方向。
注意:以这种方式调用
scanf
会放弃任何测试返回值的机会,从而判断I/O是否成功。