C将文件内容放入数组中

时间:2015-11-08 22:51:43

标签: c arrays file tokenize file-read

我正在尝试从文件中获取令牌并将其放入数组中。然而,它一直在失败。我想要的标记只是字母数字和数字。其他一切都是分隔符。

代码:

void readFile(WORDS list, char *filepath)
{
    int i = 0, j = 0, ch; 
    char *token, *temp;
    FILE *file = fopen(filepath, "r");

    if(file)
    {
        fseek(file, 0, SEEK_END);
        long f_size = ftell(file);
        fseek(file, 0, SEEK_SET);
        token = malloc(f_size);
        temp = malloc(f_size);

        while((ch = fgetc(file)) != EOF)
        {
            temp[i++] = (char) ch;

            if(regeval(temp, "^[0-9][0-9]*$"))
                token[j++] = (char) ch;
            else if(regeval(temp, "^[a-zA-Z][a-zA-Z0-9]*$"))
                token[j++] = (char) ch;
            else
            {
                token[j] = '\0';

                memset(token, 0, sizeof(f_size));
                memset(temp, 0, sizeof(f_size));
                i = j = 0;
            }
        }
    }

    fclose(file);
}

int regeval(char *str, char *exp)
{
    // Make regex object
    regex_t regex;

    // Compile and execute expression
    int reg = regcomp(&regex, exp, REG_EXTENDED);
    reg = regexec(&regex, str, 0, NULL, 0);

    // Expression matches token
    if(!reg)
        return 1;

    return 0;
}

如果我有一个名为test.txt的文件,其中包含内容:Abacus,则只打印出Abac。我究竟做错了什么?我认为这是一个nullbyte问题,所以我添加了该行,但没有任何改变。

更新:更新了代码。但是,它会打印出Segmentation fault。

0 个答案:

没有答案