01/10/2018, 16:17
Đọc từng dòng trong file nhưng bị lỗi độ dài trong C?
Code chương trình của mình như sau:
Đọc từng dòng trong file sau đó in ra màn hình từ và độ dài của chúng. ( file data.txt là file bao gồm các từ tiếng anh mỗi từ một dòng)
Nhưng lỗi ở đây là khi mình trả về độ dài của chúng thì độ dài luôn lớn hơn 1 so với thực tế
ví dụ như từ là window thì độ dài trả về lại là 7 ???
Ai giúp mình giải thích và sửa lỗi với X_X
Mình nghi fgets đọc luôn ký tự và coi đó là 1 ký tự của từ nhưng chưa biết cách sửa lỗi
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main()
{
FILE * file;
file= fopen("data.txt","r");
char* singleLine;
singleLine = (char *) malloc(150* sizeof(char *));
if(file){
while(!feof(file)){
fgets(singleLine,150, file);
puts(singleLine);
printf("length: %ld
",strlen(singleLine));
}
}
fclose(file);
return 0;
}
Bài liên quan
Bạn nghĩ đúng rồi đó bạn. Gõ
fgets cppreference
là có liền: https://en.cppreference.com/w/c/io/fgetsGóp ý, muốn kiểm tra dữ liệu chuỗi có gì, dùng
printf("string: \"%s\"\n", singleLine)
, đặt vào 1 cặp ngoặc thì bạn mới biết chính xác chuỗi có ký tự xuống dòng không. Dòng kiểm tra độ dài siêng mà sao ở trên lười vậy Test có tâm mới tìm được bugs bạn nhé!Bạn Nick cover gần hết rồi, mình chỉ note thêm:
free(singleLine);