#include <stdio.h>
int main(){
char ch;
printf("Enter one char\n");
scanf_s("%c", &ch);
printf("the char is %c.\n",ch);
return(0);
}
但由于某种原因,这会返回“char is。”我不知道为什么。
如果我将其更改为
#include <stdio.h>
int main(){
int ch;
printf("Enter one char\n");
scanf_s("%d", &ch);
printf("the char is %d.\n",ch);
return(0);
}
它工作正常并返回我输入的整数,所以我不认为问题是代码结构。出于某种原因,我似乎无法为ch变量赋值。任何帮助将不胜感激。
答案 0 :(得分:1)
尝试
scanf_s("%c", &ch, 1);
瓦尔特
答案 1 :(得分:0)
您正在使用的是scanf的安全版本,并始终记住 scanf_s 需要缓冲区大小参数才能工作,以便使scanf_s在您的程序中运行使用这个
scanf_s("%c", &ch, 1);
其中 1是缓冲区大小参数。 HTH:)
编辑:还有一件事,为什么你的程序工作时你把它作为int,因为scanf_s不需要整数的缓冲区大小参数,浮动但是每当你是读取字符,字符串,数组时,您应该强制提供缓冲区大小参数。
答案 2 :(得分:-1)
将scanf_s()替换为scanf(),因为scanf_s()是Microsoft特定的。我正在使用scanf()运行良好的代码。