typedef struct Symbol{
char varName[16];
} Symbol;
...............
Symbol *newSymbol = malloc(sizeof(Symbol));
const char space[2] = " ";
char *String = "Name Test";
//break off the first word from String and put it into name
char *name;
name = strtok(String,space);
//convert the char * to char[16]
char nameArray[16];
strcpy(nameArray,name);
//set newSymbol->varName to the newly created char[16]
newSymbol->varName = nameArray
oluşturma [] char. Benim gerçek programımda, fgets
kullanarak bir dosyadan okunur, ben sadece bu örnekte "Adı Test" diyoruz. Dizenin ilk sözcüğünü almak ve Symbol
içinde varName
olarak atamak istiyorum. Yani ne olur? newSymbol->varName
"Ad" olarak ayarlanmış. strtok
, char *
döndürdüğü için ancak char[16]
yapısına ihtiyacım var, char *
değerini char[16]
'a dönüştürmeliyim.strcpy'nin bir <code>char *</code><code>String</code> adı sahip yanlış formu
"Error: incompatible types when assigning to type 'char[16]' from type 'char*'
newSymbol -> varName = nameArray;
Yani, aslında char[16]
için char *
dönüşmüyorsa strcpy gibi görünüyor:
Ancak, bu hatayı alabilirsiniz. Bir char[16]
ilan edip strcpy
'a char *
içeriğini ekledikten sonra bile char[16]
yerine char *
var. Yapısını değiştirmeden çalışmam gerekiyor, bu yüzden burada bir seçenek değil.
char *
3'ü char[16]
içine nasıl dönüştürebilirim?
Hmmm 'char * String =" Name Test "; ... name = strtok (String, space); 'bence, bir dizgeyi değiştirmeye çalışıyorum. – chux
Oldukça doğru, @chux, fakat bunu, orijinal kodunu sunduğu örneğe indirgeme sürecinde ortaya çıkan bir hata olduğunu kabul ediyorum. –