拆分字符串后的奇怪字符

时间:2017-05-17 21:54:59

标签: c split strtok

我是编程新手。在做我的大学项目时,我遇到了一个问题。我的目标是制作一个总计大数字的程序(超过20个字符,少于100个)。它们应该在.txt文件中以空格划分。 问题是,在分割这些数字后,我只能获得第一个数字;第二个变成了一些奇怪的字符(đv1)。 如果有人能帮助我,我真的很感激。

int il_w = 4;

char * split(int w, int k)
{
    char const* const fileName = "Numbers.txt";
    FILE* file = fopen(fileName, "r");
    char linia[256];
    char * pch = '\0';
    int i = 0;

    for(i = 0; i < w + 1; i++)
        fgets(linia, sizeof(linia), file);

    i = 0;
    pch = strtok (linia, " ");

    while (i < k)
    {
        pch = strtok (NULL, " ");
        i++;
    }

    fclose(file);

    return pch;
}

int compare(char * a, char * b)
{
    printf("%s ", a);
    printf("%s", b);
    //a > b -> 0, a < b -> 1, a = b -> 2
    if(strlen(a) > strlen(b))
        return 0;
    else if(strlen(a) < strlen(b))
        return 1;
    else
    {
        int i = 0;
        for(i = 0; i < strlen(a); i++)
        {
            int anum = atoi(a[i]);
            int bnum = atoi(b[i]);

            if (anum > bnum)
                return 0;
            else if (anum < bnum)
                return 1;
            else
                continue;
        }
        return 2;
    }
}

int main()
{
    int i = 0;

    while(i < il_w)
    {
        char * number1 = split(i, 0);
        printf("%s \n", number1);
        char * number2 = strtok(split(i, 1), "\n");
        printf("%s \n", number2);

        printf("%d \n", compare(number1, number2));

        i++;
    }

    return 0;
}

0 个答案:

没有答案