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ì ?
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.
Mọi người xem giúp em vớiCode:#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); }
Bôi đen để thấy chữ kí
Có biết kí đâu mà có chữ kí chứ
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.
Bôi đen để thấy chữ kí
Có biết kí đâu mà có chữ kí chứ
Đó là do nội dung file "customer.txt"
PHP Code:Nguyen Van A; 8000000
Nguyen Van B; 8000001 ( file đến đây phải kết thúc, ko đượ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.
Đúng là ko có đánh j cả. kết thúc luôn nhưng nếu đoạn
Cho i chạy đến dem - 1 thì ko có số không nữa.Code:for (i = 0; i< dem ; i++) printf ("%s %d \n",info_phone[i].name_str,info_phone[i].phonenumber);
Bôi đen để thấy chữ kí
Có biết kí đâu mà có chữ kí chứ
Mình nghĩ thế này (không biết có đúng yêu cầu ko)
C 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; char chuoi1[50]; { int vitri = 0; int j; for ( j = 0 ; j < 500; j++ ) { if (chuoi1[j] == ';') vitri = j; } info_phone[i].name_str[vitri] = '\0'; // gan vitri cuoi bang '\0' i++; dem++; }; for (i = 0; i< dem ; i++) }
Bôi đen để thấy chữ kí
Có biết kí đâu mà có chữ kí chứ
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.
@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!