将char []转换为数组的函数未返回正确的值

时间:2015-12-01 18:57:02

标签: c multidimensional-array char int type-conversion

我需要编写一个程序,以用户的形式[num1 num2;使用指向已创建表的指针传递的num 3 num4 etc](另一个函数计算行和列并创建适当的数组),然后将其转换为数组。我不知道为什么,将char转换为int的部分会产生疯狂的数字。即对于输入[1 3],它对于第一个位置返回1,对于第二个位置返回超过20000的东西。

void string_to_table(int **matrix,char text[])
{
    printf("start");
    int len=strlen(text);
    int out=0;
    int column=0;
    int row=0;
    int pos=1;
    int j=1;
    while(j<(len-1))
    {
        if(text[j]=='-')
            pos=-1;
        else if(text[j]>='0'&&text[j]<='9')
        {
            out=out+pos*(text[j]-48);
        }
        else if(text[j]==' ')
        {
            matrix[column][row]=out;
            out=0;
            pos=1;
            ++row;
        }
        else if(text[j]==';')
        {
            matrix[column][row]=out;
            out=0;
            pos=1;
            ++column;
            row=0;
        }
        else if(text[j]=='}')
            break;
        ++j;
    }
}

*编辑打印我用

void print_da_matrix(int **matrix, int i, int j)
{
    int k=0,l=0;
    printf("[");
    while(k<i)
    {
        while(l<j)
        {
            printf("%i",matrix[k][l]);
            printf(" ");
            ++l;
        }
        if(k<(i-1))
            printf(";");
        l=0;

            ++k;
    }
    printf("]");
}

其中i和j是列数和行数。

1 个答案:

答案 0 :(得分:0)

out=out+pos*(text[j]-48);

应该是

out = out*10 + pos*(text[j]-'0');

此外,你需要对一个不遵循数字的空间做一些事情,比如';'之后的空格。