Cái dòng này bạn dùng để lấy dữ liệu của từng dòng lưu vào bộ nhớ đúng ko . Mình nghĩ nên dùng fgets thì chắc cú hơn , bạn thử xem sao .while(fscanf(fp,"%[^\n]\n",s[i])==1)
cho 1 file abc.txt
yêu cầu viết 1 hàm int comment( char file_name[])C Code:
nếu hok đọc đc file return 1;
nếu đọc được file return 0; và chỉ printf ra comment của file thôi.
tại sao mình viết code mà nó chỉ in mỗi dòng đầu thôi nhỉ.Ai giúp mình với
C Code:
#include <stdio.h> #include <conio.h> #include <string.h> //int Comments(char [50] ); int Comments(char file_name[50]) { char s[20][100]; int i,m,n; FILE *fp = NULL; if(fp==NULL) { return 0; } i++; for(n=0;n<i;n++) for(m=0;m<3;m++) if(s[n][m]=='*') { return 1; } } main() { char file_name[50]={"abc.txt"}; int i=0; //scanf(" %30s",file_name); i= Comments(file_name); getch(); }
Cái dòng này bạn dùng để lấy dữ liệu của từng dòng lưu vào bộ nhớ đúng ko . Mình nghĩ nên dùng fgets thì chắc cú hơn , bạn thử xem sao .while(fscanf(fp,"%[^\n]\n",s[i])==1)
mình thử rồi vãn vậy vạn ạ.Chán quá
mình sủa như này thì nó chạy đúng.nhưng mình viết nó thành hàm
C Code:
void main() { char file_name[50]={"abc.txt"}; char s[20][100]; int i,m,n; FILE *fp = NULL; if(fp==NULL) { return ; } i++; for(n=0;n<i;n++) for(m=0;m<3;m++) if(s[n][m]=='*') //return 1; getch(); }
Đã được chỉnh sửa lần cuối bởi adam452 : 08-04-2008 lúc 10:49 PM.
Thay đoạn code sau:
C Code:
Thành đoạn code:
C Code:
Xem thế nào?
Best Regards!
Một người nào đó coi thường ý thức kỷ luật cũng có nghĩa là người đó đã coi thường tương lai số phận của chính bản thân người đó. Những người coi thường ý thức kỷ luật sẽ không bao giờ có được sự thành công trong sự nghiệp!Email: admin[@]congdongcviet.com | CC to: info[@]congdongcviet.com
Phone: 0972 89 7667 (Office: 04 6329 2380)
Yahoo & Skype: dreaminess_world (Vui lòng chỉ rõ mục đích ngay khi liên hệ, cảm ơn!)
sau khi in no nhu sauC Code:
Em chỉ cần in ra mỗi comment thôi. Như này nàyC Code:
/*Sample * */ int int char /*prompt printf("Enter /* scanf("%s",s); /*display printf(%s\n",s); return }
C Code:
/*Sample File * source.c */ /*prompt for input */ /* accept a string */ /*display the string entered*/
Vui lòng đưa code vào tag code chứ không phải tag quote. Đọc Nội quy để biết thêm chi tiết.
Đã được chỉnh sửa lần cuối bởi Kevin Hoang : 10-04-2008 lúc 01:03 AM. Lý do: Nhắc nhở
thôi em làm đc rồi.Nhung dù sao vẫn cảm ơn anh.Anh có thể xóa topic này hộ em đc thì càng tốt.Thank anh
Code:int Comments(char file_name[50]) { char s[20][100]; int i,m,n;// em mất chua gán i=0
Đã được chỉnh sửa lần cuối bởi adam452 : 08-04-2008 lúc 11:39 PM.
Đoạn code của Dr mắc một lỗi sai
Việc sử dụng feof sẽ khiến dòng cuối cùng bị in ra 2 lần,lý do dòng cuối cùng bị in ra 2 lần là do bản thân hàm feof nó không tự phát hiện được EOF mà phải dựa vào các hàm khác như fgets,fread,...Khi các hàm này trỏ đến EOF thì feof mới nhận ra là đến cuối file.Tóm lại là không nên sử dụng feof mà nên sử dụng fgets,fscanf,....để xác định xem đã đến cuối file chưaCode:while (!feof(fp))
Ai nói với bạn là feof dựa vào các hàm fgets, fread, ... feof là một macro được định nghĩa như sau:
C Code:
#define feof(f) ((f)->flags & _F_EOF)
Bạn thử lại xem nào? Dr thấy nó chạy ổn đó!
Một người nào đó coi thường ý thức kỷ luật cũng có nghĩa là người đó đã coi thường tương lai số phận của chính bản thân người đó. Những người coi thường ý thức kỷ luật sẽ không bao giờ có được sự thành công trong sự nghiệp!Email: admin[@]congdongcviet.com | CC to: info[@]congdongcviet.com
Phone: 0972 89 7667 (Office: 04 6329 2380)
Yahoo & Skype: dreaminess_world (Vui lòng chỉ rõ mục đích ngay khi liên hệ, cảm ơn!)
Tôi có 1 file tên là dulieu.Nội dung của file này như sau:
Còn đây là chương trình C đọc dữ liệu từ file nàyCode:Chuong trinh C Fedora core 6
output của chương trìnhCode:#include<stdio.h> main() { FILE *f; char buf[50]; f=fopen("./Desktop/dulieu","r"); while(!feof(f)) { fgets(buf,sizeof(buf),f); printf("%s",buf); } }
Dr chạy thử lại xem có đúng như vậy khôngCode:Chuong trinh C Fedora core 6 Fedora core 6
Dr chạy thử code của bạn thì nó in ra:
Hoàn toàn không có sai như bạn nói.Chuong trinh C
Fedora core 6Press any key to continue . . .
Một người nào đó coi thường ý thức kỷ luật cũng có nghĩa là người đó đã coi thường tương lai số phận của chính bản thân người đó. Những người coi thường ý thức kỷ luật sẽ không bao giờ có được sự thành công trong sự nghiệp!Email: admin[@]congdongcviet.com | CC to: info[@]congdongcviet.com
Phone: 0972 89 7667 (Office: 04 6329 2380)
Yahoo & Skype: dreaminess_world (Vui lòng chỉ rõ mục đích ngay khi liên hệ, cảm ơn!)