我试图简单地从一个文本文件中返回第一个值,我把它叫做 time_temp.txt
. 这个文件的内容是:
1588567745.203
1588567745.203
1588567745.204
1588567745.204
1588567745.204
1588567745.205
1588567745.205
1588567745.205
1588567745.206
1588567745.206
我所要做的就是返回第一行的值 -- 所以在这种情况下: 1588567745.203
.
当我做 fscanf
它返回的值是-1,在我的控制台里面有一些符号。我一直在尝试用不同的操作符类型在 fscanf
函数,但似乎没有返回我所期望的值。
我的代码的简单表示。
#include <iostream>
using namespace std;
string startTime;
int main()
{
FILE *fTime = fopen("time_temp.txt", "w+");
cout << fscanf(fTime, "%s\n", &startTime) << endl;
printf("nfirst = %s\n",startTime);
fclose(fTime);
return 0;
}
还要注意的是,这是C++98的代码。
您可能收到的是 NULL
由于 fopen(3)
(该文件是否真的存在?你是否有权限在该文件上写?在该目录下?)
把你的代码改成。
#include <iostream>
using namespace std;
string startTime;
int main()
{
FILE *fTime = fopen("time_temp.txt", "w+");
if (!fTime) {
perror("fopen");
}
cout << fscanf(fTime, "%s\n", &startTime) << endl;
printf("nfirst = %s\n",startTime);
fclose(fTime);
return 0;
}
你可能就会知道是怎么回事了 你可能没有适当的访问权限来创建一个叫做 time_temp.txt
在您当前的目录中, fopen(3)
返回 NULL
,你最终叫 fscanf(NULL, "%s\n", ...
.