gpt4 book ai didi

c - C 程序中的段错误(使用结构)

转载 作者:太空宇宙 更新时间:2023-11-04 08:10:58 26 4
gpt4 key购买 nike

我一直遇到段错误,我不知道为什么,如果有人可以帮助我解决这个问题,那就太好了。我在这里找不到错误......................

我得到所有的打印状态,直到前四个循环结束

但是我没有得到“输出”打印语句,这就是设置错误的地方

#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <ctype.h>

void getWords(int arg, char** argWords, Words* words);

void getWords(int arg, char** argWords, Words* words)
{
printf("In Method\n");

int ewm=1;
for(ewm =1 ; ewm<= arg; ewm++){
int tempr = (strlen(argWords[ewm]) +1);
printf("tempr: %d\n", tempr);
words->numWords = words->numWords + tempo;
printf("numWords: %d\n", words->numWords);
printf("in\n");
}


printf("out\n");
printf("%d\n", words->numWords);
int x = 1;
int y = 0;

printf("four loop\n");
for(x= 1; x<=arg; x++){
printf("SIZE: %d\n", (strlen(argWords[x] )+1));
char* temp = malloc(strlen(argWords[x])+1);
printf("%s\n", argWords[x]);
}
}

//*****************************//
int main(int argc, char** argv){

if(argc == 0){
printf("Please input a value/n");
return 1;
}

Words *currWords = malloc(sizeof(Words));
printf("Mem located\n");

getWords(argc, argv, currWords);

return 0;
}

最佳答案

argargWords 中的元素数, 所以以下代码来自 getWords超出数组范围的函数访问:

 for(x= 1; x<=arg; x++)
{
printf("SIZE: %d\n", (strlen(argWords[x] )+1)); // <---
char* temp = malloc(strlen(argWords[x])+1); // <---

访问 argWords[x] 时出现不可预知的行为.正确的上限应该是 x < arg .

同样的问题:

 for(ewm =1 ; ewm<= arg; ewm++)   // <--- here must be ewm < arg
{
int tempr = (strlen(argWords[ewm]) +1)

关于c - C 程序中的段错误(使用结构),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39561392/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com