2013-10-25 116 views
1

我被困在如何操作數據結構上。C數據結構如何聲明

我有標題是宣佈類似這樣

struct item{ 
int i; 
char str[88]; 
}; 

文件,我有一個ç文件,我想打9結構的物品(我聲明爲全局變量,我已經包含頭文件):

struct item a[9]; 

但是當我想要把我想要的數據到

foo() 

    { 
    ... 
     // let's say I have data int in index and char[] in string 
     // and I want it to put at item_index 

     a[item_index].i = index; 
     a[item_index].str = string; 
    ... 
    } 

但是當過我試着編譯它似乎總是顯示

error: expected an identifiler 
+4

您需要使用[strcpy](http://linux.die.net/man/3/strcpy)指定給'str' - 'strcpy(a [item_index] .str,string)' – simonc

+0

'基本上所有事情都做對了。唯一的問題是你不能只給C字符串賦「=」;你需要使用像「strcpy()」這樣的函數。 – paulsm4

回答

5
a[item_index].str = string; 

這條線不會表現你期望的方式。您可能需要使用strcpy(),以複製字符串:

strcpy(a[item_index].str, string) 
0

陣列名稱是不可修改(只讀)變量或倒不如說是恆定的。

在此聲明:

a[item_index].str = string;

試圖修改數組str,這是不允許的。

要麼你可以將值分配給每個索引逐一(也就是通過strcpy完成),
或聲明指針*str,而不是數組,然後分配給它任何你想要的地址。