单个字符的 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);
}
我正在尝试用 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);
}