我需要編寫一個程序,它以表單[num1 num2; num 3 num4 etc],它與指針傳遞給一個創建的表(另一個函數對行和列進行計數並創建適當的數組),然後將其轉換爲數組。我不知道爲什麼,將char轉換爲int的部分會產生瘋狂的數字。即對於輸入[1 3],它返回1作爲第一個位置和超過20000第二個。將char []轉換爲數組的函數沒有返回正確的值
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列和行數。
爲什麼你認爲第二個元素超過20000?你打印出數組的內容了嗎?如果是這樣,請顯示那些代碼行。 –