2016-02-05 71 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); 
相關問題