Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将字符串的一部分复制到struct数组的元素?_C_Arrays_String_Segmentation Fault_Structure - Fatal编程技术网

如何将字符串的一部分复制到struct数组的元素?

如何将字符串的一部分复制到struct数组的元素?,c,arrays,string,segmentation-fault,structure,C,Arrays,String,Segmentation Fault,Structure,我的结构数组有问题。 我试图将字符串的一部分复制到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 m

我的结构数组有问题。 我试图将字符串的一部分复制到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;
}
#包括
#包括
结构指令{
字符键[1024];
字符值[16384];
智力水平;
};
int main()
{
结构目录条目[2562];
char str[]=“我将完成我的mp”;
int j=0;
int i=0;
字符温度[1024];
字符a=0;
而(a!=“h”){
a=str[i];
温度[i]=str[i];
i++;
} 
strcpy(条目[0]。值,str);
puts(条目[0]。值);
返回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];
int cnt=srtlen(str);
对于(int i=0;i
而(a!=“t”)
这是无限循环

你是说

char a = 0xff;
while(a != '\0'){...} 
?

添加

对于此任务,
for
更为清晰

int cnt = srtlen(str);
for(int i = 0; i < cnt; i++)
    temp[i] = str[i];
int cnt=srtlen(str);
对于(int i=0;i
代码中出现分段错误的一种可能性是堆栈溢出

结构中的每个变量大小约为17KB,您正在创建2562个此类变量,这意味着总共需要分配43554KB,即42MB

在shell中执行
ulimit-s
可以检查最大堆栈大小的限制,如果该限制小于43554,则单击stackoverflow


如果是这种情况,您可以尝试通过执行
ulimit-s 43554
或更多操作来增加堆栈限制。

代码中出现分段错误的一种可能性是堆栈溢出

结构中的每个变量大小约为17KB,您正在创建2562个此类变量,这意味着总共需要分配43554KB,即42MB

在shell中执行
ulimit-s
可以检查最大堆栈大小的限制,如果该限制小于43554,则单击stackoverflow


如果是这种情况,您可以尝试通过执行
ulimit-s 43554
或更多操作来增加堆栈限制。

struct dict entry[2562]可能太大,无法放入自动存储(“在堆栈上”)使其全局化或动态分配。您可能会遇到SEGFULT,因为您在堆栈上分配了大数组
struct dict entry[2562]
。尝试将它移出函数,看看它是否有效。尝试在调试器中运行它,它将帮助您确定错误位置,并让您检查变量以了解可能存在的问题。@triclosan我正在尝试复制str,直到finish@dasblinkenlight即使我将其设置为全局
struct dict条目[2562],我仍然会得到segfault可能太大,无法放入自动存储(“在堆栈上”)使其全局化或动态分配。您可能会遇到SEGFULT,因为您在堆栈上分配了大数组
struct dict entry[2562]
。尝试将它移出函数,看看它是否有效。尝试在调试器中运行它,它将帮助您确定错误位置,并让您检查变量以了解可能存在的问题。@triclosan我正在尝试复制str,直到finish@dasblinkenlight即使我让它成为全球平均值,我仍然会得到SEGFULT(a!=“h”)我正在尝试复制字符串直到完成。jellygurl,“h”与字符串的完成有何关系?…正如@triclosan指出的,它应该是“\0”,我的意思是,(a!=“h”)我正在尝试复制字符串直到完成。jellygurl,“h”与字符串的完成有何关系?…正如@triclosan指出的,它应该是“\0”