我正在編寫一個程序,該程序需要使用A-I而不是1-9的數獨板,並檢查該板是否有效。 我從文件中讀取數獨板,並使用開關將所有值更改爲數字。如何將2D字符數組轉換爲2D int int
我的計劃是使用atoi
或sscanf
將2D char數組轉換爲2D int數組,以便我可以添加所有行和列以檢查它是否是有效的板。但是,當使用這些函數時,我得到以下警告:
期望類型const char但參數類型爲char或傳遞參數argumet sscanf其中一個參數使得整型指針無需強制轉換。
我仍然很困惑指針,所以idk這是什麼意思。是否有可能將我的2d char數組更改爲2d int數組,如果有的話,還有什麼建議嗎?如果有更好的方法來檢查董事會是否有效,建議將不勝感激。由於
int main() {
int i, j;
char **matsudoku = malloc(9*sizeof(char*));
for (i=0; i<9; ++i)
matsudoku[i]=malloc(9*sizeof(char));
FILE *fpointer = fopen("C:/Users/Owner/Documents/Como Sci in C/sudokuchar.txt", "r");
if (fpointer == NULL) {
printf("Cannot open file \n");
exit(0);
}
for(i=0; i<9; i++){
for(j=0; j<9; j++){
fscanf(fpointer, " %c", &matsudoku[i][j]);
switch (matsudoku[i][j]){
case 'A':
matsudoku[i][j]='1';
break;
case 'B':
matsudoku[i][j]='2';
break;
case 'C':
matsudoku[i][j]='3';
break;
case 'D':
matsudoku[i][j]='4';
break;
case 'E':
matsudoku[i][j]='5';
break;
case 'F':
matsudoku[i][j]='6';
break;
case 'G':
matsudoku[i][j]='7';
break;
case 'H':
matsudoku[i][j]='8';
break;
case 'I':
matsudoku[i][j]='9';
break;
}
printf("%c",matsudoku[i][j]);
}
}
//atoi(matsudoku);
int k;
//or sscanf(matsudoku,"%d",%k);
fclose(fpointer);
}
爲什麼不直接使用int的二維數組讀入? – ameyCU
@ameyCU所以當我從文件中讀取時,如何直接將A通過I字符更改爲1-9? – katDouglas
@samgak嗯,這不是爲我工作兩種方法導致奇怪的符號代替字母 – katDouglas