在C中调用fwrite函数后如何检查是否成功写入?
how check successfully write after invoke fwrite function in C?
我在网站上找到这段代码:
struct person
{
int id;
char fname[20];
char lname[20];
};
int main ()
{
FILE *outfile;
// open file for writing
outfile = fopen ("person.dat", "w");
struct person input1 = {1, "rohan", "sharma"};
// write struct to file
fwrite (&input1, sizeof(struct person), 1, outfile);
if(fwrite != 0)
printf("contents to file written successfully !\n");
return 0;
}
- 行
if(fwrite != 0)
正确吗?
- 我们可以比较函数名本身吗(
fwrite
)?
- 在这种情况下
fwrite
的值是多少?
不,这绝对不是正确的做法。正确的做法是:
if(fwrite(&input1, sizeof(struct person), 1, outfile)) != 1) {
/* Error writing */
}
但是为了避免重复的幻数,这样会更好:
size_t num = 1;
if(fwrite(&input1, sizeof(struct person), num, outfile)) != num) {
我很难相信任何网站会发布这样的垃圾代码。我知道 geeksforgeeks 不是很值得信赖,但这非常糟糕。在很多层面上都是错误的。
if(fwrite != 0)
是一个完全没有意义的检查。如果 fwrite != 0
的计算结果为 false,则意味着对 fwrite
的函数调用将失败。检查基本上意味着“fwrite
是一个空指针吗?”如果一个库函数是一个空指针,那肯定是有问题的。
fwrite
returns写入的元素个数,在本例中应该是一个元素。
我之前写了一个 ,但现在我需要将 geeksforgeeks 添加到我建议远离的资源列表中。
我在网站上找到这段代码:
struct person
{
int id;
char fname[20];
char lname[20];
};
int main ()
{
FILE *outfile;
// open file for writing
outfile = fopen ("person.dat", "w");
struct person input1 = {1, "rohan", "sharma"};
// write struct to file
fwrite (&input1, sizeof(struct person), 1, outfile);
if(fwrite != 0)
printf("contents to file written successfully !\n");
return 0;
}
- 行
if(fwrite != 0)
正确吗? - 我们可以比较函数名本身吗(
fwrite
)? - 在这种情况下
fwrite
的值是多少?
不,这绝对不是正确的做法。正确的做法是:
if(fwrite(&input1, sizeof(struct person), 1, outfile)) != 1) {
/* Error writing */
}
但是为了避免重复的幻数,这样会更好:
size_t num = 1;
if(fwrite(&input1, sizeof(struct person), num, outfile)) != num) {
我很难相信任何网站会发布这样的垃圾代码。我知道 geeksforgeeks 不是很值得信赖,但这非常糟糕。在很多层面上都是错误的。
if(fwrite != 0)
是一个完全没有意义的检查。如果 fwrite != 0
的计算结果为 false,则意味着对 fwrite
的函数调用将失败。检查基本上意味着“fwrite
是一个空指针吗?”如果一个库函数是一个空指针,那肯定是有问题的。
fwrite
returns写入的元素个数,在本例中应该是一个元素。
我之前写了一个