C语言如何为接收指针参数的get_user_input函数传递choice值
正确调用方案
你当前的写法存在两个核心问题:
get_user_input是无返回值(void)类型的函数,不能直接将调用结果赋值给变量- 该函数要求传入
char*类型的指针参数,指向用于存储输入字符的内存地址,你调用时没有传入对应参数
修正后的调用代码
void manual_read_sensors(void) { while (1) { // 询问用户需要读取哪个传感器 printf("Which sensor do you want to read?\n" "(i)ntensity\n" "(a)ngle\n" "(t)ime\n" "(s)unscreen\n" "(q)uit\n" "Enter choice: "); // 定义存储用户输入的字符变量 char choice; // 传入变量的内存地址到函数中,函数会直接修改该变量的值 get_user_input(&choice); // 输入q则返回主菜单 if (choice == 'q') break; // 此处可以补充其他输入对应的处理逻辑 } }
实现原理
get_user_input的参数input是字符指针,接收外部choice变量的地址后,函数内部的scanf(" %c", input)会把用户输入的字符直接写入该地址对应的内存空间,相当于直接修改了外部的choice变量,不需要通过函数返回值传递输入结果。原有get_user_input的实现逻辑无需调整,可以直接使用。
内容的提问来源于stack exchange,提问作者DeckChain
相关产品推荐
相关产品推荐

