我一直在尋找答案,但一直沒有找到可行的解決方案。正如您在下面的代碼中看到的那樣,我試圖將選擇的值傳遞給 get_user_input(char *input)。我認為這就是我想要做的,因為我需要在 get_user_input(char *input) 中呼叫函式 scanf。
我對編程還很陌生,在嘗試理解指標和參考時遇到了很多麻煩
我希望有人可以幫助我!
get_user_input(char input) 函式
void get_user_input(char *input) {
*input = '\0' ;
scanf(" %c", input);
}
試圖從函式 get_user_input(char input)呼叫 scanf( )
void manual_read_sensors(void) {
while (1) {
// Ask the user for which sensor to read.
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: ");
void choice = get_user_input(); <----- Trying to call
// Return to the main menu again.
if (choice == 'q')
break;
uj5u.com熱心網友回復:
首先,您的get_user_input函式接受 achar *并且不回傳任何內容,但您沒有傳遞任何內容 - 您應該傳遞choicelike:的地址get_user_input(&choice);。如果您傳遞 的地址choice,該get_user_input函式將能夠向其寫入資料。
其次,void choice不是有效的宣告。盡管您可以宣告一個void *choice. 在這種情況下,您應該宣告choice為char: char choice;。
第三,get_user_input不回傳任何內容,您不應該嘗試將函式的結果分配給變數。
第四,*input = '\0' ;在下一步中沒有實作任何目標,你input用scanf.
get_user_input 應該是這樣的:
void get_user_input(char *input) {
scanf(" %c", input);
}
manual_read_sensors 應該看起來像:
void manual_read_sensors(void) {
char choice;
while (1) {
// Ask the user for which sensor to read.
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: ");
get_user_input(&choice);
// Return to the main menu again.
if (choice == 'q')
break;
uj5u.com熱心網友回復:
您已宣告get_user_input()函式將 char 參考作為其引數。但是當從manual_read_sensors()函式呼叫這個函式時,沒有傳遞給 get_user_input() 函式的參考。
選擇變數不能宣告為 void 型別,因為這在 C/C 語言(參考)中是不允許的。而是嘗試宣告,
char choice;
由于get_user_input()函式被宣告為以void作為回傳型別,它不能向其他函式回傳任何值,因此,不能像這樣為變數賦值,
char choice = get_user_input(); //error
由于get_user_input()不回傳任何值,我們需要使用指標變數來操作選擇變數。但是指標變數也需要指向變數的地址,這就是為什么我們需要將選擇變數的參考(或地址)傳遞給get_user_input()函式的原因。像這樣,
get_user_input(&choice);
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/342871.html
下一篇:cython使用類包裝器指標
