我遇到以下代码问题:
int main(void)
{
char *pointer;
int num, i;
printf_s("Enter number of elements: ");
scanf_s("%d", &num);
pointer = (char*) malloc(sizeof(char) * num);
for (i = 0; i < num; i++, pointer++)
scanf_s(" %c", pointer);
pointer -= num;
for (i = 0; i < num; i++)
printf_s("%c", *(pointer + i));
free(pointer);
return 0;
}
代码相当简单,我想要做的就是打印我刚刚输入的字符。相反,它不打印任何/空白。我做错了什么?
答案 0 :(得分:1)
变化:
scanf_s(" %c");
要:
scanf_s("%c");
虽然你在这里(虽然与手头的问题没有直接关系),但摆脱了malloc
:
int main(void)
{
char c;
scanf_s("%c", &c);
printf_s("%c", c);
return 0;
}
答案 1 :(得分:0)
避免malloc
(尽管巴拉克答案是正确的)
#include<stdio.h>
#include<stdlib.h>
#include<ctype.h>
int main(void)
{
char x;
scanf_s("%c", &x);
printf_s("%c", x);
return 0;
}
答案 2 :(得分:0)
除了已经给出的建议......
以下内容来自scanf_s
与scanf和wscanf不同,scanf_s和wscanf_s要求为所有包含在[]中的c,C,s,S或字符串控件集的输入参数指定缓冲区大小。
对于字符,可以按如下方式读取单个字符:
char c;
scanf_s("%c", &c, 1);