gpt4 book ai didi

c - 通过 fgets 从 txt 文件检索的文本的某些部分在 c 中丢失了

转载 作者:行者123 更新时间:2023-11-30 16:20:24 25 4
gpt4 key购买 nike

我正在通过 fgets 读取一个名为“dictionary.txt”的文件并打印出来,但是当我运行该程序时,“dictionary.txt”中 10% 的标题文本丢失了。

我怀疑是否是缓冲区的大小太小,但是将 MAX_INT 更改为更大的数字也没有帮助。

#include <stdio.h>
#include<string.h>
#define MAX_INT 50000

void main() {
FILE *fp;
char* inp = (char*)malloc(sizeof(char)*MAX_INT);
int i;
int isKorean = 0;
char* buffer[MAX_INT];
char* ptr = (char*)malloc(sizeof(char)*MAX_INT);

if (fp = fopen("C://Users//user//Desktop//dictionary.txt", "r")) {
while (fgets(buffer, sizeof(buffer), fp)) {
ptr = strtok(buffer, "/"); //a line is looking like this : Umberto/영어("English" written in Korean)
for (i = 0; i < strlen(ptr); i++) {
if ((ptr[i] & 0x80) == 0x80) isKorean = 1; //check whether it's korean
if (!isKorean) printf("%c", ptr[i]); //if it's not korean, then print one byte
else {
printf("%c%c", ptr[i], ptr[i + 1]); //if it's korean, then print two bytes
i++;
}
isKorean = 0;
printf("\n");
}
ptr = strtok(NULL, " ");
printf("tagger:%s\n", ptr); //print the POS tagger of the word(it's in dictionary)
}

fclose(fp);
}
}

最佳答案

函数 fgets 的概要如下:

char *
fgets(char * restrict str, int size, FILE * restrict stream);

那么为什么要把 buffer 作为指针数组呢?char buffer[MAX_INT] 就是我们所需要的。
以及以下声明:if (fp = fopen("/Users/weiyang/code/txt", "r")) 不安全,赋值后最好加括号。

关于c - 通过 fgets 从 txt 文件检索的文本的某些部分在 c 中丢失了,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55320269/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com