2014-02-28 41 views
-3
#include <malloc.h> 

void main() 
{ 
    char **variable; 
    int count=0 

    variable=(char **)malloc(sizeof(char *)*100); 

    for(i=0;i<100;i++) 
    variable[i]=(char *)malloc(sizeof(char)*11); 

    scanf("%s",variable[count]); 
} 

現在我想一個值分配給存在於可變[COUNT] 例如字符串:如果variable[count]包含字符串「ABC」,然後我要分配20爲abc ,如果我用printf(「% d」,美國廣播公司),那麼它應該打印20如何爲c語言中的數組元素賦值?

+2

'%d'打印整數,而不是字符串。 –

+1

'「如果變量[count]包含一個字符串abc,那麼我想將20賦給abc」'...所以..你想要一個字符串數組,然後你想給一個字符串賦一個整數?你的意思是'abc'是一個變量或者一個字符串'「abc」'?你的意思是包含「20」的字符串嗎? – Mike

+0

是的,abc應該被當作一個變量來處理,並且被分配一個整數值20 – user3365619

回答

0

類型variablechar **,則variable應該指向char *的列表,而不是char的列表。因此,variable=(char **)malloc(sizeof(char)*100);應該是variable=(char **)malloc(sizeof(char *)*100);

順便說一句,在malloc()之前的類型鑄造是不必要的。


現在我想一個值分配給存在於可變[COUNT]例如字符串:如果變量[COUNT]包含字符串「ABC」,然後我要分配20爲abc和,如果我使用printf(「%d」,abc),那麼它應該打印20

你想把variable[count]的值作爲一個變量。不幸的是,你不能那樣做。 C是一種靜態編程語言,這意味着您不能像運行時編程語言那樣在運行時創建變量。

但是C足夠強大,可以讓你模擬這個。你可以創建一個查找表,如

typedef struct var { 
    char *name; 
    int val; /* or whatever type you want */ 
} var_t; 

var_t variable[num_of_vars]; /* or whatever data structure that you can search */ 
1

這裏

variable=(char **)malloc(sizeof(char)*100); 
要分配指針,所以specifiy指針的正確尺寸

,即char*,就像這樣:

variable = malloc(100 * sizeof(char*)); 

甚至更​​好的是這樣的:

variable = malloc(100 * sizeof(*variable)); 

順便說一句:在C有沒有需要轉換的malloc/calloc/realloc的結果,也不是建議。


繼規則/上述意見,此行

variable[i]=(char *)malloc(sizeof(char)*11); 

應該更好像這樣

variable[i] = malloc(11 * sizeof(*variable[i])); 

最後這個電話是危險的:

scanf("%s",variable[count]); 

因爲它往往會溢出variable[count],所以請告訴scanf()保存多少使掃描爲最大,這樣做:

scanf("%10s", variable[count]); /* Leave one (10=11-1) spare for the C-"string"'s 0-terminator. */ 

而且這

int main(void) 
相關問題