我需要编写一个程序,以用户的形式[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是列数和行数。
答案 0 :(得分:0)
out=out+pos*(text[j]-48);
应该是
out = out*10 + pos*(text[j]-'0');
此外,你需要对一个不遵循数字的空间做一些事情,比如';'之后的空格。