2016-02-05 65 views
0

我试图在一个声明为char *name[2];的变量中存储一个字符串。我正在使用scanf()从用户输入中获取值。这是到目前为止我的代码和其目前没有工作:如何将字符串存储在C中的char * s []中?

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

另请参阅:http://stackoverflow.com/questions/1704407/what-is-the-difference-between-char-s-and-char-s-in-c – Lundin

回答

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; 
} 
0
char *name[2]; 

你有2个三分球这是类型char

使用malloc()或其任何家庭成员将内存分配给指针。

name[0] = malloc(20); 
相关问题