我如何在C中的char * s []中存储字符串?

时间:2016-02-05 09:23:59

标签: c

我试图将一个字符串存储在声明为char *name[2];的变量中。我正在使用scanf()从用户输入中获取值。到目前为止,这是我的代码,目前无效:

#include <stdio.h>
#include <stdlib.h>
int main()
{   char *name[2];
    scanf("%s",name[0]);
    printf("%s",name[0]);
    return 0;
}

2 个答案:

答案 0 :(得分:2)

您尚未为实际字符串分配任何存储空间 - char *name[2]只是两个未初始化指针的数组。尝试:

#include <stdio.h>
#include <stdlib.h>

int main()
{
    char name[2][80];
    scanf("%s", name[0]);
    printf("%s", name[0]);
    return 0;
}

或者,如果确实需要char *name[2],那么您可以动态分配内存:

#include <stdio.h>
#include <stdlib.h>

int main()
{
    char *name[2];
    name[0] = malloc(80);  // allocate memory for name[0] (NB: name[1] left uninitialised)
    scanf("%s", name[0]);
    printf("%s", name[0]);
    free(name[0]);         // free memory allocated for name[0]
    return 0;
}

答案 1 :(得分:0)

char *name[2];

你有两个类型为char

的指针

使用malloc()或其任何系列元素为指针分配内存。

name[0] = malloc(20);