指针,字符和malloc

时间:2014-03-09 11:16:20

标签: c pointers char scanf

我遇到以下代码问题:

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;
}

代码相当简单,我想要做的就是打印我刚刚输入的字符。相反,它不打印任何/空白。我做错了什么?

3 个答案:

答案 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);

http://msdn.microsoft.com/en-us/library/w40768et.aspx