gpt4 book ai didi

c - 使用 fscanf 逐行读取

转载 作者:太空宇宙 更新时间:2023-11-04 00:59:46 27 4
gpt4 key购买 nike

我想读取一个包含 3 行的文件:

第一个是字符串,第二个是数字,第三个也是字符串。

例子:

第1行:小鸟玩具书电脑水

第 2 行:2

第3行:玩具水

我有这段代码,它读取一个文件,逐字将它们存储在单词数组中,然后将单词放入单词二维数组中。

char words [5][50];
char word [50];
int i,j;
j = 0;

while( (fscanf(file, "%s", word))!=EOF ){
for(i = 0; i<50; i++){
if(word[i] != NULL){
words[j][i] = word[i];
} else{
break;
}
}
j++;

}

它正在工作,但它会读取所有行,我想要一种方法来只对第一行执行此过程,然后将第二行存储到一个 int 变量中,将第三行存储到另一个二维数组中。

最佳答案

阅读更多关于 fscanf 的信息. 不适合逐行阅读

考虑改为使用 fgets 读取每一行甚至更好(在 POSIX 上)getline (参见 this ),然后可能用 sscanf 解析每一行.它的返回值(从 sscanf 等给出的扫描项目的计数)可能对测试很有用(您可能还想在扫描控件中使用 %n格式字符串;如 Jonathan Leffler 所评论,另请阅读有关 %ms 赋值分配修饰符的信息,至少在 POSIX 系统上,请参阅 Linux sscanf(3)

顺便说一句,像 50 这样的硬编码限制你的字长是不好的品味(而不是 robust )。考虑更系统地使用 C dynamic memory allocation (使用 malloc, free and friends )和指针,有时可能使用 flexible array members在你的一些 struct-s

关于c - 使用 fscanf 逐行读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44862582/

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