gpt4 book ai didi

c - 使用 fscanf 从文件中读取单词

转载 作者:太空狗 更新时间:2023-10-29 16:10:31 24 4
gpt4 key购买 nike

我有一个具有以下编码的 .txt 文件:

Alpha-Beta-Gamma-Delta-Epsilon
Zeta-Eta-Theta-Iota-Kappa-Lamda-Mi
Ni-Ksi-Pi-Ro-Sigma

我想读取这些单词并将它们存储在一个数组中。我用 fscanf(fp, "%[^-]", word)

读了那些词

但是当我将 fscanf 放入一段时间后,它会一直读取同一个词。如果我将它放在 while 语句中,它就不会重复。

重点是从 Alpha 到 Sigma 分别读取每个单词

我为您提供了该问题的最小可验证代码:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

int main(){
FILE *fp;
char *word = (char*)malloc(40);
int count = 0;
char* Words[30]; //max 30
fp = fopen("MyWords.txt","r"); //read only
int r = 1;
while(1){
if(fscanf(fp, "%[^-]", word) == EOF) break;
printf("%s",word);
}
fclose(fp);
return 0;
}

注意:我不想修改文件。另外我应该如何处理 \n characheter

最佳答案

使用宽度说明符 39 限制输入,比 word 可用的 40 个字节少 1,因为 fscanf() 将附加一个空字符。只要 fscanf() 成功返回 1,就继续阅读。使用以下定界符 '-''\n' ,

while(fscanf(fp, "%39[^-\n]", word) == 1) {
printf("<%s>\n",word);
fscanf(fp, "%*[-\n]"); // consume delimiter, no need to save.
}

注意:使用 [^-\n] 而不是 [^\n-] 因为放置 - 之后看起来像开始不完整的扫描设置范围。

关于c - 使用 fscanf 从文件中读取单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44419151/

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