gpt4 book ai didi

c - 逐行将文件读入结构中

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

代码:-

#include <stdio.h>
#include <string.h>
int main ()
{
FILE *fp;
const char s[3] = " "; /* trying to make 2 spaces as delimiter */
char *token;
char line[256];

fp = fopen ("input.txt","r");
fgets(line, sizeof(line), fp);

token = strtok(line, s);

/* walk through other tokens */
while( token != NULL )
{
printf( " %s\n", token );

token = strtok(NULL, s);
}
return 0;
}

input.txt 如下所示:

01  Sun Oct 25 16:03:04 2015  john  nice meeting you!
02 Sun Oct 26 12:05:00 2015 sam how are you?
03 Sun Oct 26 11:08:04 2015 pam where are you ?
04 Sun Oct 27 13:03:04 2015 mike good morning.
05 Sun Oct 29 15:03:07 2015 harry come here.

我想逐行读取这个文件并将其存储在变量中,例如

int no = 01
char message_date[40] = Sun Oct 27 13:03:04 2015
char friend[20] = mike
char message[120] = good morning.

如何实现这一目标?是否可以将文件逐行存储到类似

的结构中
struct {
int no.;
char date[40];
char frined[20];
char message[120];
};

使用上面的代码我得到以下输出:-(为了简单起见,目前我只阅读一行)

 01
Sun
Oct
25
16:03:04
2015
john
nice
meeting

你!

最佳答案

一种方法是使用 fgets() 读取文件的每一行,并使用 sscanf() 解析每一行。扫描集 %24[^\n] 将读取最多 24 个字符,停在换行符处。日期格式有 24 个字符,因此读取日期。扫描集 %119[^\n] 最多读取 119 个字符,以防止向 message 写入过多字符,并在换行符处停止。 sscanf() 返回成功扫描的字段数,因此 4 表示扫描成功的行。

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

struct Text {
int no;
char date[40];
char name[20];
char message[120];
};

int main( )
{
char line[200];
struct Text text = {0,"","",""};

FILE *pf = NULL;

if ( ( pf = fopen ( "input.txt", "r")) == NULL) {
printf ( "could not open file\n");
return 1;
}
while ( ( fgets ( line, sizeof ( line), pf))) {
if ( ( sscanf ( line, "%d %24[^\n] %19s %119[^\n]"
, &text.no, text.date, text.name, text.message)) == 4) {
printf ( "%d\n%s\n%s\n%s\n", text.no, text.date, text.name, text.message);

}
}
fclose ( pf);
return 0;
}

关于c - 逐行将文件读入结构中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33373343/

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