我不断收到seg错误,我不知道为什么,如果有人能帮助我,那就太好了。我在这里找不到错误............
我得到了所有的打印状态,直到前四个循环结束
然而,我没有得到"out“print语句,这就是设置错误的地方
#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;
}发布于 2016-09-19 02:56:59
arg是argWords中的元素数,因此以下来自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)https://stackoverflow.com/questions/39561392
复制相似问题