[英]copy a struct array to another (not struct) array in C
我正在嘗試將名稱數組復制到另一個數組並打印它
#include <stdio.h>
typedef struct
{
char name[100];
int age;
} data;
int main() {
char new_array[100];
data people[] = {{ "john", 12},{" kate", 15}};
for(int i =0; i < sizeof(people); i++) {
new_array[i] = people[i].name;
printf("%c ", new_array[i]);
}
return 0;
}
但它給了我一個錯誤:
error: assignment to ‘char’ from ‘char *’ makes integer from pointer without a cast [-Werror=int-conversion]
new_array[i] = people[i].name;
^
我該如何解決?
你可以改變:
char new_array[100];
至:
char new_array[10][100]; // for maximum 10 strings
然后使用strcpy
復制 c 中的字符串。 如果要計算數組的元素數,請使用:
sizeof(people)/sizeof(people[0]);
那么,for循環就變成了:
for(int i =0; i < sizeof(people)/sizeof(people[0]); i++) {
strcpy(new_array[i],people[i].name);
printf("%s ", new_array[i]);
}
您正在嘗試將字符串分配給錯誤描述的字符。 要將字符串復制到 char 數組,您應該使用strcpy()
。
此外,您的new_array
只是一個字符數組,無法區分兩個不同的名稱。
要使其成為字符串數組,您應該使用二維數組,您可以在其中索引行以獲取不同的字符串,如下所示
char new_array[10][100]
這將創建一個由 10 個字符串組成的數組,每個字符串包含 100 個字符。
此外,您對結構數組的迭代很混亂。
要獲得正確大小的結構數組,您應該使用
int size = sizeof(people)/sizeof(people[0])
因此,您的最終代碼變為-
#include <stdio.h>
#include <string.h>
typedef struct
{
char name[100];
int age;
} data;
int main() {
char new_array[10][100];
data people[] = {{ "john", 12},{" kate", 15}};
for(int i =0; i < sizeof(people)/sizeof(people[0]); i++) {
strcpy(new_array[i],people[i].name);
printf("%s ", new_array[i]);
}
return 0;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.