Từ 1 tới 6 trên tổng số 6 kết quả

Đề tài: cách lấy dữ liệu trong file kiểu char ra mang

  1. #1
    Ngày gia nhập
    09 2011
    Bài viết
    15

    Mặc định cách lấy dữ liệu trong file kiểu char ra mang

    Mình gặp một vấn đề k giải quyết được.
    file input:
    - dòng đầu tiên ghi 2 số n,m;
    - có n dòng m cột tiếp theo có các kí tự char liên tiếp nhau.
    Làm sao có thể lấy được dữ liệu kiêu char nay? Mình lấy theo kiêu bình thường mà k hết kí tự,k biết sao nữa..
    vd:
    5 6
    B...*.
    ..*...
    .**.*.
    ..***.
    *..*.C
    ------------------------------
    mình lấy theo kiểu này mà không được
    Code:
      void input()
    {
    	int i,j;
    	FILE *fi;
    	fi=fopen("duongdi.inp","r");
    	fscanf(fi,"%d%d",&n,&m); 
    	for(i=1;i<=n;i++)
    	   for(j=1;j<=m;j++)
    	     {
    		  fscanf("%c",&a[i][j]);
    		    if(a[i][j]=='C')
    		      {
          		     s=i;
    				 p=j;	
          		  }
          		if(a[i][j]=='B')  
          		  {
      		      	d=i;
      		      	f=j;
      		      }
    	     }
    	 a[d][f]='.'   ;
    		    fclose(fi);
    };

  2. #2
    Ngày gia nhập
    05 2011
    Bài viết
    2

    Nếu bạn dùng hàm fscanf thì nó sẽ lấy kí tự trong file cho đến khi gặp dấu cách. Trong file thì ko phải như trong mảng 2 chiều đâu bạn à.
    CUỘC SỐNG LÀ KHÔNG CHỜ ĐỢI

  3. #3
    Ngày gia nhập
    09 2011
    Bài viết
    15

    thế mình phải làm thế nào bạn...

  4. #4
    Ngày gia nhập
    11 2010
    Nơi ở
    hell
    Bài viết
    165

    Trích dẫn Nguyên bản được gửi bởi prince-huy Xem bài viết
    thế mình phải làm thế nào bạn...
    nếu mảng toàn kí tự thì cách nó ra.để kề nhau thì thành chuỗi rồi còn gì
    HT117-5277

  5. #5
    Ngày gia nhập
    10 2011
    Bài viết
    46

    Để đọc file trong C với intchar đi cùng nhau, bạn phải chú ý kí tự xuống dòng, hơi tricky một chút. Nếu bạn dùng C++ sẽ dễ dàng hơn. Đây là demo:
    C++ Code:
    1. #include <stdio.h>
    2. #include <stdlib.h>
    3.  
    4. char **allocate_matrix(int row, int col) {
    5.     char **array = (char**) malloc(row * sizeof(char*));
    6.     for (int i = 0; i < row; ++i) {
    7.         *(array + i) = (char*) malloc(col * sizeof(char));
    8.     }
    9.     return array;
    10. }
    11.  
    12. char **read_matrix_from_file(FILE* fp, int *row, int *col) {
    13.     char ch;
    14.     int x = 0;
    15.     int y = 0;
    16.     // read row;
    17.     fscanf(fp, "%d", row);
    18.     // read column
    19.     fscanf(fp, "%d", col);
    20.     // create matrix
    21.     fgetc(fp); // ignore '\n'
    22.     char **array = allocate_matrix(*row, *col);
    23.     // read from file
    24.     while ((ch = fgetc(fp)) != EOF) {
    25.         if (ch != '\n') {
    26.             array[x][y] = ch;
    27.             y++;
    28.             if (y == *col) {
    29.                 x++;
    30.                 y = 0;
    31.             }
    32.         }
    33.     }
    34.     return array;
    35. }
    36.  
    37. void release(char **array, int row) {
    38.     for (int i = 0; i < row; ++i) {
    39.         free(array[i]);
    40.     }
    41.     free(array);
    42. }
    43.  
    44. void show(char **array, int row, int col) {
    45.     for (int i = 0; i < row; ++i) {
    46.         for (int j = 0; j < col; ++j) {
    47.             printf("%c", array[i][j]);
    48.         }
    49.         printf("\n");
    50.     }
    51. }
    52.  
    53. int main() {
    54.     FILE *fp = fopen("data.txt", "r");
    55.     int row;
    56.     int col;
    57.     char **array = read_matrix_from_file(fp, &row, &col);
    58.     show(array, row, col);
    59.     release(array, row);
    60. }

  6. #6
    Ngày gia nhập
    09 2011
    Bài viết
    15

    Mặc định cách lấy dữ liệu trong file kiểu char ra mang

    như bài trên thì bạn làm thế nào...mình vẫn chưa làm được
    coding ....

Các đề tài tương tự

  1. Lập trình C++ tìm số lượng ảnh của một mảng 2 chiều trong file kiểu char !
    Gửi bởi xuandao20294 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 6
    Bài viết cuối: 30-04-2013, 11:18 PM
  2. lấy dữ liệu kiểu char* trong file txt C++
    Gửi bởi traipro_latuiday trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 1
    Bài viết cuối: 29-09-2012, 08:28 PM
  3. Socket Chương trình truyền file trong mang Lan bang C#???
    Gửi bởi huyaof trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 3
    Bài viết cuối: 08-05-2011, 11:44 PM
  4. Kỹ thuật C++ hỏi về Hàm putback(char) trong xuất nhập file
    Gửi bởi autorun12 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 0
    Bài viết cuối: 24-03-2011, 11:49 PM
  5. Đọc dữ liệu từ file đưa vào char* trong C++
    Gửi bởi alisson trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 2
    Bài viết cuối: 18-03-2011, 08:38 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn