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

Đề tài: [ Solved ]Lỗi đọc chuỗi kí tự từ file. Help help...

  1. #1
    Ngày gia nhập
    11 2007
    Bài viết
    17

    Mặc định [ Solved ]Lỗi đọc chuỗi kí tự từ file. Help help...

    Mình có một file data.txt là file văn bản có cấu trúc mỗi dòng gồm từ và nghĩa của một từ tiếng anh cách nhau bởi dấu ;

    data.txt
    Code:
    a;mao tu 
    an;mao tu 
    cpu;bo vi xu li
    ram;bo nho
    rom;bo nho
    khi mình đọc file kí từ theo từng dòng, mối dòng ghi vào một biến char dong[80] và gặp lỗi khi tách thành từ và nghĩa. Nghĩa luôn bị lặp lại bởi các nghĩa từ trên. Bạn nào sửa lỗi giùm với

    lỗi :
    Code:
    a;maotu
    tu la : a nghia la: mao tu
    
    an;maotu
    tu la : an nghia la:maotu
    maotu
    
    tu la :cpu nghia la:maotu
    maotu
    bo vi xu li
    file tach_chuoi.cpp
    Code:
    #include"conio.h"
    #include"stdio.h"
    #include"string.h"
    int i,j,k,l=0;
    void main()
    {
    
    FILE *file;
    char dong[80],tu[30],nghia[50];
      file=fopen("data.txt","r");                   //mo file data.txt de doc
      while(!feof(file))
      {
    	  fgets(dong,80,file);                 // doc tung dong ki tu trong file
    	  printf("\n %s",dong);                
    	  for(int i=1;dong[i]!='\0';i++)       // tim vi tri ki tu ;
    	  { if(dong[i]==';')
    			{
    			 for(j=0;j<i;j++)          // gan chuoi ki tu vao tu
     			 {
     			 	 tu[j]=dong[j];
    			 }
    			 for(j=i;j<strlen(tu);j++)
    			 {
    			 tu[j]=' ';
    			 }
    			 for(k=i+1;k<strlen(dong);k++)  // gan chuoi ki tu vao nghia
      			 {
      			 	 nghia[l]=dong[k];
      			 	 l++;
      			 } 			 
    		 break;
    			}
    	  }
    		printf(" tu la : %s \t nghia la : %s \n",tu,nghia); // in ra de kiem tra
      }
      fclose(file);
      getch();
    }
    Học, học nữa, học mãi (^ ^) !!!

  2. #2
    Ngày gia nhập
    02 2008
    Nơi ở
    Việt Nam
    Bài viết
    577

    Tạm thời mình chỉ sửa để cho nó chạy ra kết quả mà bạn mong muốn, nhưng code viết quá lộn xộn, nếu có thời gian mình sẽ chỉnh sửa một cách cẩn thận hơn cho bạn.
    Code:
    #include"conio.h"
    #include"stdio.h"
    #include"string.h"
    int i,j,k,l;
    int main()
    {
    
    FILE *file;
    char dong[80],tu[30],nghia[50];
      file=fopen("data.txt","r");                   //mo file data.txt de doc
      while(!feof(file))
      {
      	fflush(stdin);
    	  fgets(dong,80,file);              // doc tung dong ki tu trong file
    	  printf("\n %s",dong);
    	  for(int i=1;dong[i]!='\0';i++)       // tim vi tri ki tu ;
    	  { if(dong[i]==';')
    			{
    			 for(j=0;j<i;j++)          // gan chuoi ki tu vao tu
     			 {
     			 	 tu[j]=dong[j];
    			 } tu[j+1]='\0';    //khoa chuoi
    			 /*for(j=i;j<strlen(tu);j++)
    			 {
    			 tu[j]=' ';
    			 }*/
    			 l=0;
    			 for(k=i+1;k<strlen(dong)+1;k++)  // gan chuoi ki tu vao nghia
      			 {
      			 	 nghia[l]=dong[k];
      			 	 l++;
      			 }
    		 break;
    			}
    	  }
    		printf(" tu la : %s \t nghia la : %s \n",tu,nghia); // in ra de kiem tra
      }
      fclose(file);
      getch();
    }
    Have fun!

  3. #3
    Ngày gia nhập
    02 2008
    Nơi ở
    Việt Nam
    Bài viết
    577

    Đây rồi, bạn đọc qua xem có ổn hơn không
    Code:
    #include"conio.h"
    #include"stdio.h"
    #include"string.h"
    
    int main()
    {
    	FILE *file;
    	char dong[80],tu[30],nghia[50];
    	file=fopen("data.txt","r");
    	while(!feof(file))
    	{
    		fflush(stdin);
    		fgets(dong,80,file);
    		printf("\n %s",dong);
    		int n=strlen(dong);
    		int i=0;
    		while (dong[i]!=';')
    		{
    			tu[i]=dong[i];
    			i++;
    		}
    		tu[i]='\0';
    		int j=0;
    		while (i++<=n)
    		{
    			nghia[j]=dong[i];
    			j++;
    		}
    	printf(" tu la : %s \t nghia la : %s \n",tu,nghia);
    	}
    	fclose(file);
    	getch();
    }
    Chúc bạn học tốt!

  4. #4
    Ngày gia nhập
    11 2007
    Bài viết
    17

    Mình sửa được rùi, thanks bạn QuangHoang nhiều nhé.
    Học, học nữa, học mãi (^ ^) !!!

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

  1. Bài tập C++ Cách để so sánh 2 chuỗi kí tự giữa chuỗi nhập từ phím và chuỗi từ file xem có giống nhau không?
    Gửi bởi davilson18 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 4
    Bài viết cuối: 09-06-2012, 09:47 AM
  2. [Solved]hỏi về chuỗi
    Gửi bởi thanhlinhhue trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 2
    Bài viết cuối: 28-11-2008, 12:13 PM
  3. [Solved]đổi chuỗi thường thành chuỗi hoa
    Gửi bởi thanh_rio trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 3
    Bài viết cuối: 22-10-2008, 11:30 AM
  4. [Solved]Kiểm tra chuỗi tuần hoàn
    Gửi bởi trinitrotoluen trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 6
    Bài viết cuối: 20-03-2008, 03:38 PM
  5. [Solved]Thay thế từ trong 1 chuỗi
    Gửi bởi dragoncl12 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 1
    Bài viết cuối: 02-12-2007, 06:20 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