c - 如何将用户在 C 中输入的字符传递给 printf?

标签 c pointers printf

我刚从 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 从指针生成整数而不进行强制转换

当我运行它时,它打印出一些奇怪的字符,而不是我应该传递的字符。

能否请您向我解释一下我在这里遗漏了重点? 提前致谢!

最佳答案

更改函数以接受 char *:

void processChar(const char *num)
{
    printf("TADA: %s", num); /* %s instead of %c */
}

Could you please explain to me where I am missing the point here?

您传递和使用 num 时就好像它是一个字符,而实际上它是一个字符数组。

关于c - 如何将用户在 C 中输入的字符传递给 printf?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12096384/

相关文章:

检查未知符号变量是否在区间内

c - 动态内存分配比数组好在哪里?

c - 程序打印不必要的 'ÿ' 字符

c++ - Printf() - 打印字符限制

css - 使用 CSS 表 (GTK+3) 更改 GtkToggleToolButton 的文本颜色

c - 错误 : "Transport endpoint is already connected"

java - c srand 和 rand 的奇怪用法

c - 如何在C中获取未知长度的char*?

c - 带二维数组的指针

c - Printf 数字右对齐