如何使用 fgets 读取包含字符串和整数的文件
How to read files with strings and integers using fgets
我注意到 fscanf
不适用于确定的 C 编译器(Intel、Cray),所以我想使用 fgets
读取包含字符串和整数的简单输入文件
$cat input.txt
st 10 167 POP 456 244 NONE ENERGY
我可以做这样的事情
int main()
{
FILE *ptr_file;
char buf[1000];
ptr_file = fopen("input.txt", "r");
if (!ptr_file)
return 1;
for (int i = 0; i < 8; i++) {
fgets(buf, 1000, ptr_file);
printf("%s", buf);
}
fclose(ptr_file);
return 0;
}
读取文件,然后创建 switch case
以将 buf
的值存储在 integer
或 string
中。这显然不是很有效,我想知道是否有人有更好的主意。
考虑使用 sscanf,本质上是这样的
// st 10 167 POP 456 244 NONE ENERGY
sscanf(buf, "%s %d %d %s %d %d %s %s", var1, &var2....);
我注意到 fscanf
不适用于确定的 C 编译器(Intel、Cray),所以我想使用 fgets
读取包含字符串和整数的简单输入文件
$cat input.txt
st 10 167 POP 456 244 NONE ENERGY
我可以做这样的事情
int main()
{
FILE *ptr_file;
char buf[1000];
ptr_file = fopen("input.txt", "r");
if (!ptr_file)
return 1;
for (int i = 0; i < 8; i++) {
fgets(buf, 1000, ptr_file);
printf("%s", buf);
}
fclose(ptr_file);
return 0;
}
读取文件,然后创建 switch case
以将 buf
的值存储在 integer
或 string
中。这显然不是很有效,我想知道是否有人有更好的主意。
考虑使用 sscanf,本质上是这样的
// st 10 167 POP 456 244 NONE ENERGY
sscanf(buf, "%s %d %d %s %d %d %s %s", var1, &var2....);