如何使scanf_s()在我的C程序中正常工作?
由于某种原因,我的C程序在输出“输入字母(D/E/F)”后立即关闭 我希望能够在字母[]数组中存储3个字符,以便以后打印它们 我使用Visual Studio 2017,程序没有错误。它似乎跳过了如何使scanf_s()在我的C程序中正常工作?,c,C,由于某种原因,我的C程序在输出“输入字母(D/E/F)”后立即关闭 我希望能够在字母[]数组中存储3个字符,以便以后打印它们 我使用Visual Studio 2017,程序没有错误。它似乎跳过了printf(“输入一个字母(D/E/F):”)之后的所有内容 我认为问题与scanf_有关,但我不知道问题是什么,也不知道如何解决。以下是我的节目: #include <stdio.h> int main(void) { char letters[3]; char ch;
printf(“输入一个字母(D/E/F):”)之后的所有内容代码>
我认为问题与scanf_有关,但我不知道问题是什么,也不知道如何解决。以下是我的节目:
#include <stdio.h>
int main(void)
{
char letters[3];
char ch;
printf("Enter a letter (A/B/C): ");
scanf_s(" %c", &ch);
letters[0] = ch;
printf("Enter a letter (D/E/F): ");
scanf_s(" %c", &ch);
letters[1] = ch;
printf("Enter a letter (G/H/I): ");
scanf_s(" %c", &ch);
letters[2] = ch;
printf("You entered %c, %c, and %c.", letters[0], letters[1], letters[2]);
getchar(); getchar(); // PAUSE
return 0;
}
#包括
内部主(空)
{
字符[3];
char ch;
printf(“输入字母(a/B/C):”;
scanf_s(“%c”和“ch”);
字母[0]=ch;
printf(“输入字母(D/E/F):”;
scanf_s(“%c”和“ch”);
字母[1]=ch;
printf(“输入字母(G/H/I):”;
scanf_s(“%c”和“ch”);
字母[2]=ch;
printf(“您输入了%c、%c和%c.”,字母[0]、字母[1]、字母[2]);
getchar();getchar();//暂停
返回0;
}
请帮助。已更改scanf\u s(“%c”和&ch)代码>到扫描(“%c”和ch,1)代码>程序现在可以运行了
再次感谢Weather Vane,一些程序员,Kal Karaman,Weather Vane,还有这个网页: 您缺少一个参数,请详细阅读scanf\u s
的手册页。它不是scanf
,所以不要做任何假设。你使用的是错误的。请查看发布在这个问题上的解决方案:与scanf
和wscanf
不同,scanf_s
和wscanf_s
要求为包含在[]中的c、c、s、s或字符串控制集的所有输入参数指定缓冲区大小。缓冲区大小(以字符为单位)作为指向缓冲区或变量的指针后的附加参数传递。更好的代码还可以检查返回值:if(1==scanf_s(…))Success()代码>