首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C程序中的错误分割(使用结构)

C程序中的错误分割(使用结构)
EN

Stack Overflow用户
提问于 2016-09-19 02:50:18
回答 1查看 61关注 0票数 0

我不断收到seg错误,我不知道为什么,如果有人能帮助我,那就太好了。我在这里找不到错误............

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

然而,我没有得到"out“print语句,这就是设置错误的地方

代码语言:javascript
复制
#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;
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-09-19 02:56:59

argargWords中的元素数,因此以下来自getWords函数访问的代码超出了数组界限:

代码语言:javascript
复制
 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

同样的问题出现在:

代码语言:javascript
复制
 for(ewm =1 ; ewm<= arg; ewm++)   // <--- here must be ewm < arg
 {
   int tempr = (strlen(argWords[ewm]) +1)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39561392

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档