30/09/2018, 22:07 
               
            Hỏi về hàm gets và fgets trong C
mọi người giúp em về hàm fgets trong C với 
lúc em dùng hàm gets(tentaptin) thì stdin lưu vào tentaptin bình thường mà chạy vẫn ngon lành
Khi em dungfgets(tentaptin,40,stdin) thì stdin vẫn lưu vào đc tentaptin mà khi fopen thì lại báo lỗi không mở đc file. Em vẫn không hiểu dù đã chạy f11 để xem chi tiết. Mọi người giải thích hộ em 
        void OpenCloseFile(char tentaptin[])
        {
        	FILE *fp;	//file pointer
    	fp = fopen(tentaptin, "wt");
    	if (fp == NULL)
    		printf("Loi mo file
");
    	else
    	{
    		fprintf(fp, "Que huong la chum khe ngot
");
    		fputs("Cho con treo hai moi ngay
", fp);
    		fclose(fp);
    		printf("Da luu file thanh cong");
    	}
    }` 
        void main()
        {
        char tentaptin[50]
        printf("Moi nhap duong dan va ten tap tin: ");
         fgets(tentaptin, 40, stdin);  //báo lỗi không mở được file
         //gets(tentaptin); chay bt 
        OpenCloseFile(tentaptin);
        }
            Bài liên quan
         
                
            




Vì
getsđọc chuỗi từstdintới khi gặp ký tự newline\nnhưng không đọc nó vào chuỗi, cònfgetsđọc luôn cả\nvào chuỗi. Giả sửtentaptinlà"file_name.txt"thìgetsđọc vào chuỗi"file_name.txt"cònfgetsđọc vào chuỗi"file_name.txt\n"Cảm ơn anh em hiểu r. Vậy là lúc mình
enterthì nó cũng hiểu là mình\nphải không anh. Với lại anh cho em hỏi là mình dùng hàmfgetsthay choscanfthì có cần để ý gì không hay là dùng thoải mái lúc nào cũng được. Em cảm ơnKhi em bấm
Enterlàstdinsẽ nhận vào ký tự'\n'. Em dùng hàmscanfđể nhập chuỗi thì nó sẽ kết thúc khi gặp các ký tự trắng nhưspace,enter,… tức là chỉ đọc được các chuỗi ký tự không chứa các ký tự khoảng trắng, cònfgetnó sẽ chỉ dừng khi gặp'\n'bao gồm cả các ký tự khoảng trắng, một lưu ý nữa làfgetyêu cầu phải có kích thước mảng lưu trữ, cònscanfthì không, nênfgetsan toàn hơnscanfhaygets.cảm ơn a thông não r