这是我在这里发表的第一篇文章,所以我真的不知道如何以正确的格式发布这里的内容。我有一个问题,如何从文件中读取一行,并将一些单词读成字符串,一些单词作为Int。
int check = sscanf(read, "%s %d", string, &integer);
printf("%s, %d", string, integer);
以上是我的所作所为。输入是“oneword 1”。我得到的是“(null)4196448”。那我怎么能正确地做到这一点?谢谢
这是我的代码的一部分。
int i;
for (i = 1; i <= 3; i++)
{
char read[MAX_LENGTH_INPUT];
fgets(read, sizeof(read), stdin);
int check2 = sscanf(read, "%s %d", word, &number);
printf("%s %d\n", word, number);
}
所以for循环是在.in文件中扫描三行。我能这样做吗? 这是.in文件,它是输入。
oneword 1
twoword 2
thirdword 3
输出
(null) 4196448
(null) 4196448
(null) 4196448
答案 0 :(得分:1)
同样在您的代码中int check2 = sscanf(read, "%s %d %d", word, &number);
格式说明符为3但参数为2。
如果file
包含
oneword 1
secondword 2
thirdword 3
fourthword 4
然后
#include <stdio.h>
int main ()
{
FILE *fp = fopen("file", "r");
char read[100];
int integer;
char string[64];
while (fgets(read, sizeof(read), fp) != NULL)
{
int check = sscanf(read, "%s %d", string, &integer);
if (check == 2) {
printf("%s, %d\n", string, integer);
}
else{
printf("Failed to scan all values\n");
}
}
}
输出
oneword, 1
secondword, 2
thirdword, 3
fourthword, 4
您可以在此处修改fgets
,只需将stdin
替换为行fp
中的stdin
while (fgets(read, sizeof(read), fp) != NULL)
获取意见
答案 1 :(得分:0)
您正在使用sscanf
从char *
类型读取数据,并根据参数格式将它们存储到附加参数给出的位置,就像使用scanf
一样,但是从字符串而不是标准输入读取(stdin) )。
您需要使用fscanf
,并且代码中的read
应该是指向文件的指针。