[英]Storing file of Char and Int
我不知道為什么無法弄清楚,但是我正在嘗試讀取一個看起來像這樣的文件
000xx
11xx0
0x1x0
11110
我正在嘗試讀取文件,然后搜索“ x”值並將其替換為“ 2”,然后將它們存儲在數組中以備后用。 輸出應如下所示。
00022
11220
02120
11110
我不確定是否要實現此權利,我認為必須將文件存儲到數組中,然后搜索並替換。 這是我的代碼,僅用於讀取文件並嘗試打印,我嘗試同時使用int數組和char數組,但我不知道為什么我無法弄清楚,任何幫助將不勝感激。
int main()
{
FILE *fvec;
fvec =fopen("numbers.vec" , "r");
if(!fvec){printf("error reading file");}
int col, row;
int array[10][10];
for (col = 0; col < 10; ++col){
for (row = 0; row <10; ++row){
fscanf(fvec, "%d", &array[col][row]);}
}
for (col = 0; col < 10; ++col){
for (row = 0; row <10; ++row){
printf("%d", array[col][row]);}
printf("\n");
}
}
這是我在打印時得到的
0039300480203200
48008044
183289603930048039300480
您將讀取帶有ASCII字符(數字和x)的文件,因此,在讀取它們時應將其轉換為數字。 其次,正如您所說,您需要將字符“ x”轉換為數字2,這很簡單。 此外,還可以改善循環的終止條件,該條件僅讀取文件中的行數或文件中的最大行數即可。 鑒於上述情況,您可能想做以下事情
memset(array, 0, sizeof(array)); // do this so that everything is set to 0
while ((fgets(buf, 20, fvec) != 0) && ( row < 10)) {
printf("%s", buf);
for (int col = 0; col < strlen(buf); col++) {
if (buf[col] == 'x') {
array[row][col] = 2; // turn this to digit 2
} else if (isdigit(buf[col])) {
array[row][col] = buf[col] - '0';// turn this to a digit
}
}
row++;
}
您還可以逐個字符地讀取字符(帶有%c等的fscanf等),但是以上僅舉一個示例
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.