[英]How to copy a part of a string to an element of array of struct?
我在結構數組方面遇到問題。 我正在嘗試將字符串的一部分復制到struct數組的元素中。 (對不起,如果聽起來不太清楚)
這是我的代碼
#include <stdio.h>
#include <string.h>
struct dict {
char key[1024];
char value[16384];
int level;
};
int main()
{
struct dict entry[2562];
char str[]="i will finish my mp";
int j=0;
int i = 0;
char temp[1024];
char a =0;
while(a != 'h' ){
a = str[i];
temp[i] = str[i];
i++;
}
strcpy(entry[0].value,str);
puts(entry[0].value);
return 0;
}
它可以編譯,但確實存在分段錯誤,我不知道它有什么問題,請幫忙
while(a != 't' )
這是無限循環
你的意思是
char a = 0xff;
while(a != '\0'){...}
?
加
此任務for
更清晰
int cnt = srtlen(str);
for(int i = 0; i < cnt; i++)
temp[i] = str[i];
代碼中的分段錯誤的一種可能是堆棧溢出。
您的結構中每個變量的大小約為17KB,您正在創建2562個此類變量,這意味着總共需要分配約43554KB的內存,其中42MB需要分配。
您可以通過在外殼程序中執行ulimit -s
來檢查最大堆棧大小的限制,如果小於43554,則可達到stackoverflow。
如果是這種情況,您可以嘗試通過執行ulimit -s 43554
或更多方法來增加堆棧限制。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.