num,&t->string1,&t->str-6ren">
gpt4 book ai didi

c - 如何从文本文件中写入和读取(包括空格)

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

我正在使用 fscanffprintf

我尝试用 \t 分隔每一行的字符串并像这样阅读它:

fscanf(fp,"%d\t%s\t%s",&t->num,&t->string1,&t->string2);

文件内容:

1[TAB]string1[TAB]some string[NEWLINE]

它没有正确读取。如果我 printf("%d %s %s",t->num,t->string1,t->string2) 我得到:

1 string1 some

我也收到这个编译警告:

warning: format specifies type 'char *' but the argument has type 'char (*)[15]' [-Wformat]

如何在不使用二进制 r/w 的情况下解决这个问题?

最佳答案

我猜 "some string" 中的空格是问题所在。 fscanf() 使用 %s 读取字符串在第一个空白字符处停止。要包含空格,请使用类似的东西:

fscanf(fp, "%d\t%[^\n\t]\t%[^\n\t]", &t->num, &t->string1, &t->string2);

另见 a reference page for fscanf()和/或 another StackOverflow thread on reading tab-delimited items in C .

[针对您的编辑进行编辑:您传递给 fscanf() 的参数似乎也有问题。您需要发布 t->string1 的声明才能确定,但​​看起来 string1 是一个字符数组,因此您应该删除 & 来自 fscanf() 调用...]

关于c - 如何从文本文件中写入和读取(包括空格),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20803245/

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