Mã của tôi giống như máy nén văn bản, đọc văn bản bình thường và biến thành số, mỗi từ có một số. Nó biên dịch trong DevC++ nhưng không kết thúc, tuy nhiên, nó không biên dịch trong Ubuntu 13.10. Tôi nhận được một lỗi như trong tiêu đề trong Ubuntu "không xác định tham chiếu đến` strlwr '", mã của tôi là một chút dài vì vậy tôi không thể đăng nó ở đây, nhưng một trong những lỗi là từ đây:tham chiếu không xác định cho `strlwr '
//operatinal funcitons here
int main()
{
int i = 0, select;
char filename[50], textword[40], find[20], insert[20], delete[20];
FILE *fp, *fp2, *fp3;
printf("Enter the file name: ");
fflush(stdout);
scanf("%s", filename);
fp = fopen(filename, "r");
fp2 = fopen("yazi.txt", "w+");
while (fp == NULL)
{
printf("Wrong file name, please enter file name again: ");
fflush(stdout);
scanf("%s", filename);
fp = fopen(filename, "r");
}
while (!feof(fp))
{
while(fscanf(fp, "%s", textword) == 1)
{
strlwr(textword);
while (!ispunct(textword[i]))
i++;
if (ispunct(textword[i]))
{
i = 0;
while (textword[i] != '\0')
i++;
i--;
while (ispunct(textword[i]))
i--;
i++;
i=0;
while (isalpha(textword[i]))
i++;
textword[i] = '\0';
}
addNode(textword);
}
}
.... //main continues
khi gọi bất kỳ của 'scanf()' chức năng: 1) luôn luôn kiểm tra giá trị trả về (không phải là giá trị tham số) để đảm bảo cuộc phẫu thuật đã thành công. 2) khi sử dụng các thông số đầu vào '% s' và'% [...] ', luôn bao gồm một biến tố MAX CHARACTERS nhỏ hơn độ dài của trường đầu vào để tránh tràn bộ đệm vì a) chúng sẽ tiếp tục nhập ký tự cho đến khi điều kiện kết thúc, vì vậy có thể tràn bộ đệm đầu vào (hành vi không xác định) và bởi vì các định dạng đầu vào đó luôn thêm một byte NUL vào đầu vào. – user3629249
liên quan đến: 'while (! Feof (fp))' [why 'while (! Feof (fp))' luôn sai] (https://stackoverflow.com/questions/5431941/why-is-while-feof- file-always-wrong) – user3629249
liên quan đến: 'while (ispunct (từ văn bản [i])) i--; i ++; i = 0; 'Điều này là vô nghĩa. Nó sẽ luôn luôn dẫn đến 'i' được đặt thành 0 – user3629249