输出中的分段错误 - 未知原因

时间:2015-08-30 04:45:35

标签: c arrays segmentation-fault output

我目前正在编写一个程序,它从一个充满标点符号和其他字符的字符串中返回单词的“列表”;即删除标点符号。例如:

("'hello 00095there =--0world.22")

应该返回:

hello
there
world

但是在目前这一点,我的代码(对于有问题的字符串)返回:

hello
there
world
segmentation fault (core dump)

从技术上来说,它正在返回正确的答案,但接下来是分段错误,我不确定为什么会这样。

我的代码如下:

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

char** wordList(const char* s) {
    int count;
    int pree = strlen(s);
    char *first = malloc(pree * sizeof(double));
    char *last = malloc(1 * sizeof (double));
    int w = 0;
    int saad = 0;
    int oo = 0;


    for (int u = 0; u != pree; u++){
        first[oo] = s[oo];
        oo++;
    }


    for (int i = 0; i != pree; i++){
        if( (first[i]>='a'&& first[i]<='z') || (first[i]>='A' && first[i]<='Z')|| (first[i] ==' ')){
        last[w] = first[i];

        w++;
        count++;
        }

    }

    int strange = strlen(last);
    int dude_no_p = pree - strange;
    for (int pp = 0; pp != pree-dude_no_p; pp++){

            if (last[saad] == ' '){
                printf("\n");
                saad++;
            }
            else{
                printf("%c", last[saad]);
                saad++;
            }

    }
printf("\n");



    return 0;
}








int main (void) {
char** words = wordList("'hello 00095there =--0world.22"); 
int i = 0; 
while (words[i] != NULL) { 
    printf("%s\n", words[i]); 
free(words[i]); // We're done with that word 
i++; 
} 
free(words); // We're done with the list
}

当我正在研究这个计算机科学项目时,我无法改变主要区域内的任何内容,所以我发现解决这个问题相当困难。

0 个答案:

没有答案