簡體   English   中英

存儲Char和Int文件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM