【发布时间】:2012-08-23 16:39:54
【问题描述】:
我刚从 C 开始,并试图掌握指针的整个概念,我刚刚遇到了以下问题。
我正在尝试打印出用户输入的字符,并将其传递给单独的函数:
#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。 -
对不起,我的错,整个事情实际上是一个更大的代码的一部分,我只是把它缩小到这两个函数。 *已编辑
-
您接受了一个告诉您更改函数签名的答案。你不需要;您只需要传递正确的类型。当您传入
getNum时,数组降级为指向char的指针,因此您传入的指针指向需要char的函数。相反,只需传入getNum[0](或任何合适的元素。)