我剛剛開始與C並試圖掌握指針的整個想法,我剛剛遇到以下問題。如何將字符傳遞給用戶在C中輸入的printf?
我想打印出來,這是由它傳遞給一個單獨的功能,用戶輸入的字符:
#define MAX_OPTION_INPUT 1
#define TRUE 1
#define FALSE 0
// print a menu
void getCharacter() {
char getNum[MAX_OPTION_INPUT+2];
int finished = FALSE;
// get character from user
do {
fgets(getNum, MAX_OPTION_INPUT+2, stdin);
if (getNum[strlen(getNum) - 1] != '\n') {
printf("Input one digit number please.\n");
readRestOfLine();
}
else {
getNum[strlen(getNum) - 1] = '\0';
finished = TRUE;
}
} while (!finished);
processChar(getNum);
}
// process menu
void processChar(char num) {
printf("TADA: %c", num);
}
當我編譯這個代碼,我得到一個警告:過客「processChar」的參數1從指針變成無整型的整數
當我運行它時,它會打印出一些奇怪的字符,而不是我應該傳遞的字符。
您能否向我解釋我在這裏錯過了這一點? 在此先感謝!
你永遠不會真的在那個代碼中調用'processChar'。 –
對不起,我的不好,整個事情實際上是一個更大的代碼的一部分,我只是把它縮小到這兩個函數。 *編輯 – YemSalat
您接受了一個答案,告訴您更改函數的簽名。你不需要;你只需要傳遞正確的類型。當你傳遞'getNum'時,數組降級爲一個指向'char'的指針,所以你傳入一個指向一個函數的指針,該函數需要一個'char'。相反,只需傳入'getNum [0]'(或其中合適的元素)。 –