单个字符的 scanf() 函数不起作用

scanf() function for single char not working

我正在尝试用 C 编写一个简单的函数 replaceChar 来替换在 main 中初始化为 0 的单个字符 A。当 main 调用 replaceChar 时,它打印 input 为 'b',但在该函数之后,它打印 A 为空。

我不明白为什么输入的字符没有保存到A。我也试过将A初始化为'/0'和" "。跟指针有关系吗?

#include <stdio.h>

void replaceChar(char input);

int main () {
    char A = 0;
    replaceChar(A);
    printf("2: %c\n", A);
    return 0;
}

void replaceChar(char input) {
    printf("Enter a single character: ");
    scanf(" %c", &input);
    printf("1: %c\n", input);   
}

returns:

Enter a single character: b
1: b
2: 

您正在按值传递 input,因此当您写入它时,您只是在副本中写入,而不是在原件中写入。你想要这样的东西:

#include <stdio.h>

void replaceChar(char input);

int main () {
    char A = 0;
    replaceChar(&A);
    printf("2: %c\n", A);
    return 0;
}

void replaceChar(char *input) {  
    printf("Enter a single character: ");
    scanf(" %c", input);
    printf("1: %c\n", *input);   
}