【发布时间】:2018-12-22 04:17:33
【问题描述】:
我想从文件的每一行中读取 2 个字符串和一个整数。文件中的空白位置未知。第一个字符串的长度未指定,第二个字符串为 2 个字符。代码如下:
int main (int argc, char **argv)
{
char firstString[50], secondString[2];
int number = 0;
FILE *fp;
fp = fopen(argv[1], "r"); // Opens file to read
if (fp == NULL) // Checks if file exists
{
printf("Error in opening file.\n");
exit(0);
}
while (fscanf(fp, "%50s %2s %1d", firstString, secondString, number) == 3)
{
printf("First String is %s.\n", firstString);
printf("Second String is %s.\n", secondString);
printf("Number is %d.\n", number);
}
fclose(fp);
return 0;
}
输出总是类似于:
First String is .
Second String is AB.
Number is 3.
First String is .
Second String is CD.
Number is 1.
【问题讨论】:
-
旁白:
secondString[2]不足以容纳%2s指定的长度为 2 的字符串。空终止符没有空间。同样,第一个说明符应该是%49s。 -
number==>&number. -
您的代码无法编译。什么是患者 ID?编辑您的问题。还包括一个示例输入文件。
-
string的length可能是2,但是需要的数组size是3。
-
请发布显示问题的Minimal, Complete, and Verifiable example。该代码显然不是您正在使用的代码。不要遗漏
#include库标题。