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

Đề tài: Lỗi hiện dư số 0 khi đọc tệp vào trong 1 struct trong C++?

  1. #1
    Ngày gia nhập
    10 2010
    Bài viết
    249

    Wink Lỗi hiện dư số 0 khi đọc tệp vào trong 1 struct trong C++?

    Mình có 1 tệp customer.txt có dạng "Họ và tên; stt" số điện thoại trong khoảng 800000 đến 8999999
    ví dụ
    Code:
    Nguyen Van A; 8000000
    Nguyen Van B; 8000001
    .
    Chương trình tách các dữ liệu trên và lưu vào 1 mảng cấu trúc struc.
    EM không hiểu sao khi chạy nó lại in ra thế này. nó có thêm mấy cái kí tự j nữa kia.


    Đây là code chương trình.
    Code:
    #include<stdio.h>
    #include<string.h>
    #include<conio.h>
    #include<stdlib.h>
    int main()
    {
        struct  customer
    	{
    		char name_str[30];
    		unsigned long phonenumber;	
    	} info_phone[10];
    	
    	//---------------------------
    	FILE *f;
    	long sdt;
    	int i = 0, dem = 0;
    	char ten[30],*tam;
    	f = fopen("customer.txt","r");
    	char chuoi1[50];
    	while(!feof(f))
    	{
    	
    	fgets(chuoi1,50,f);
    	tam = strstr(chuoi1,"8");
    	int vitri = 0;	
    	info_phone[i].phonenumber = atoi(tam);	
    	int j;
    	for ( j = 0 ; j < 500; j++ )
    	{
    		if (chuoi1[j] == ';')
    		vitri = j;
    	}
    	strncpy(info_phone[i].name_str,chuoi1,vitri);
    	i++;
    	dem++;
    	};
    	for (i = 0;  i< dem ; i++)
    	printf ("%s %d \n",info_phone[i].name_str,info_phone[i].phonenumber);	
    }
    Mọi người xem giúp em với
    Bôi đen để thấy chữ kí
    Có biết kí đâu mà có chữ kí chứ

  2. #2
    Ngày gia nhập
    07 2008
    Nơi ở
    /media/Anime
    Bài viết
    2,288

    http://diendan.congdongcviet.com/sho...d.php?p=286812

    Trong topic đó mình đã nhắc nhở bạn, thế mà ở đây bạn lại bị y chang lỗi đó. Nếu bạn ko chịu nghe theo ý kiến của người khác thì bạn hỏi để làm gì ?
    Càng yêu mèo thì mèo càng mập. Mèo càng mập ta lại càng yêu.

  3. #3
    Ngày gia nhập
    10 2010
    Bài viết
    249

    Trích dẫn Nguyên bản được gửi bởi meoconlongvang Xem bài viết
    http://diendan.congdongcviet.com/sho...d.php?p=286812

    Trong topic đó mình đã nhắc nhở bạn, thế mà ở đây bạn lại bị y chang lỗi đó. Nếu bạn ko chịu nghe theo ý kiến của người khác thì bạn hỏi để làm gì ?
    Bạn có nói rõ nó là j đâu chứ. Phải nó là kí tự kết thúc tệp mình mới hiểu mà áp dụng chứ. Ah. Mình đã sửa lại và được rùi nhưng nó còn lòi đâu ra số 0 ở dòng thứ 3 kia bạn.
    Bôi đen để thấy chữ kí
    Có biết kí đâu mà có chữ kí chứ

  4. #4
    Ngày gia nhập
    07 2008
    Nơi ở
    /media/Anime
    Bài viết
    2,288

    Đó là do nội dung file "customer.txt"
    PHP Code:
    Nguyen Van A8000000
    Nguyen Van B
    8000001 file đến đây phải kết thúcko được dư byte nào ra cảko đánh enter cho xuống dòng 
    Càng yêu mèo thì mèo càng mập. Mèo càng mập ta lại càng yêu.

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

    Đúng là ko có đánh j cả. kết thúc luôn nhưng nếu đoạn
    Code:
    for (i = 0;  i< dem ; i++)
    	printf ("%s %d \n",info_phone[i].name_str,info_phone[i].phonenumber);
    Cho i chạy đến dem - 1 thì ko có số không nữa.
    Bôi đen để thấy chữ kí
    Có biết kí đâu mà có chữ kí chứ

  6. #6
    Ngày gia nhập
    01 2011
    Nơi ở
    \WINDOWS\Assembly\
    Bài viết
    54

    Mặc định Lỗi hiện dư số 0 khi đọc tệp vào trong 1 struct trong C++?

    Trích dẫn Nguyên bản được gửi bởi tuanvu199x Xem bài viết
    Đúng là ko có đánh j cả. kết thúc luôn nhưng nếu đoạn
    Code:
    for (i = 0;  i< dem ; i++)
    	printf ("%s %d \n",info_phone[i].name_str,info_phone[i].phonenumber);
    Cho i chạy đến dem - 1 thì ko có số không nữa.
    Mình nghĩ thế này (không biết có đúng yêu cầu ko )

    C Code:
    1. #include<stdio.h>
    2. #include<string.h>
    3. #include<conio.h>
    4. #include<stdlib.h>
    5.  
    6. int main()
    7. {
    8.     struct  customer
    9.     {
    10.         char name_str[30];
    11.         unsigned long phonenumber; 
    12.     } info_phone[10];
    13.    
    14.     //---------------------------
    15.     FILE *f;
    16.     long sdt;
    17.     int i = 0, dem = 0;
    18.     char ten[30],*tam;
    19.     f = fopen("customer.txt","r");
    20.     char chuoi1[50];
    21.     while(fgets(chuoi1,50,f)) // thay feof
    22.     {  
    23.    
    24.     tam = strstr(chuoi1,"8");
    25.     int vitri = 0; 
    26.     info_phone[i].phonenumber = atoi(tam); 
    27.     int j;
    28.     for ( j = 0 ; j < 500; j++ )
    29.     {
    30.         if (chuoi1[j] == ';')
    31.         vitri = j;
    32.     }
    33.     strncpy(info_phone[i].name_str,chuoi1,vitri);
    34.     info_phone[i].name_str[vitri] = '\0'; // gan vitri cuoi bang '\0'
    35.     i++;
    36.     dem++;
    37.     };
    38.  
    39.     for (i = 0;  i< dem ; i++)
    40.     printf ("%s %d \n",info_phone[i].name_str,info_phone[i].phonenumber);  
    41. }

  7. #7
    Ngày gia nhập
    10 2010
    Bài viết
    249

    Trích dẫn Nguyên bản được gửi bởi taller Xem bài viết
    Mình nghĩ thế này (không biết có đúng yêu cầu ko )

    C Code:
    1. #include<stdio.h>
    2. #include<string.h>
    3. #include<conio.h>
    4. #include<stdlib.h>
    5.  
    6. int main()
    7. {
    8.     struct  customer
    9.     {
    10.         char name_str[30];
    11.         unsigned long phonenumber; 
    12.     } info_phone[10];
    13.    
    14.     //---------------------------
    15.     FILE *f;
    16.     long sdt;
    17.     int i = 0, dem = 0;
    18.     char ten[30],*tam;
    19.     f = fopen("customer.txt","r");
    20.     char chuoi1[50];
    21.     while(fgets(chuoi1,50,f)) // thay feof
    22.     {  
    23.    
    24.     tam = strstr(chuoi1,"8");
    25.     int vitri = 0; 
    26.     info_phone[i].phonenumber = atoi(tam); 
    27.     int j;
    28.     for ( j = 0 ; j < 500; j++ )
    29.     {
    30.         if (chuoi1[j] == ';')
    31.         vitri = j;
    32.     }
    33.     strncpy(info_phone[i].name_str,chuoi1,vitri);
    34.     info_phone[i].name_str[vitri] = '\0'; // gan vitri cuoi bang '\0'
    35.     i++;
    36.     dem++;
    37.     };
    38.  
    39.     for (i = 0;  i< dem ; i++)
    40.     printf ("%s %d \n",info_phone[i].name_str,info_phone[i].phonenumber);  
    41. }
    Ế bác- EM chạy vẫn có số 0,sửa thành dem-1 thì ko có nữa nè
    Bôi đen để thấy chữ kí
    Có biết kí đâu mà có chữ kí chứ

  8. #8
    Ngày gia nhập
    07 2008
    Nơi ở
    /media/Anime
    Bài viết
    2,288

    Bạn up cái file customer.txt của bạn lên thử, code của bạn dùng file customer.txt của mình ko bị dư gì cả.
    Càng yêu mèo thì mèo càng mập. Mèo càng mập ta lại càng yêu.

  9. #9
    Ngày gia nhập
    03 2010
    Nơi ở
    Nơi nào đó trong vũ trụ
    Bài viết
    550

    @chủ topic:
    Mình nghĩ thế này:
    - Việc thừa mấy ký tự phía sau tên là do: hàm strncpy không copy ký tự '\0' vào cuối xâu tên của bạn, vì vậy khi in ra thì bị thừa mấy ký tự lạ. Bạn nên nhét thêm ký tự '\0' vào cuối xâu tên.
    - Việc thừa số 0 ở cuối là do: đọc thừa 1 dòng trống, nên hàm atoi trả về 0, và trước số 0 có 1 dấu cách vì khi in ra bạn phân cách giữa tên và số là 1 dấu cách. Tên trong trường hợp này là rỗng. Chắc là file của bạn có vấn đề như anh meoconlongvang đã đề cập. Bạn thay lại file mới xem sao, hay xóa 1 dòng cuối đi.
    Gió thu lạnh lẽo hắt hiu lòng!

  10. #10
    Ngày gia nhập
    01 2011
    Nơi ở
    \WINDOWS\Assembly\
    Bài viết
    54

    Trích dẫn Nguyên bản được gửi bởi tuanvu199x Xem bài viết
    Ế bác- EM chạy vẫn có số 0,sửa thành dem-1 thì ko có nữa nè
    Trích dẫn Nguyên bản được gửi bởi meoconlongvang
    Bạn up cái file customer.txt của bạn lên thử, code của bạn dùng file customer.txt của mình ko bị dư gì cả.
    đúng vậy bạn thử up cía customer.txt koi

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

  1. Tổ chức bộ nhớ trong Class và trong Struct (Alignment and Padding)
    Gửi bởi G.Perelman trong diễn đàn Thủ thuật, Tutorials CTDL & Giải thuật
    Trả lời: 8
    Bài viết cuối: 22-04-2016, 10:09 AM
  2. Bài tập C++ làm sao truy xuất biến của struct lồng trong struct
    Gửi bởi quangnam.tamky 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: 10-04-2013, 05:22 PM
  3. Khác nhau giữa struct trong c và struct trong c++
    Gửi bởi nhutlv01 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: 17-02-2012, 09:12 AM
  4. rắc rối với con trỏ sử dụng trong struct
    Gửi bởi northernsnow trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 3
    Bài viết cuối: 09-02-2011, 10:51 AM
  5. Lỗi trong bài sắp xếp họ tên trong struct theo abc.
    Gửi bởi ribbon trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 5
    Bài viết cuối: 19-11-2010, 01:31 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