fopen_s(&file, "filename", mode) 在 visual studio 2019 C_language 中不起作用
Does't work fopen_s(&file, "filename", mode) in visual studio 2019 C_language
这是我的第一个问题。如果你能帮助我,那将不胜感激。这段代码是关于我的论文的。我正在尝试写入一个文件并且它可以工作,但试图读取另一个文件却没有读取。我不能让它工作。屏幕上出现“文件打不开”。请帮助我,阅读文件。
#include <cstdio>
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
int main()
{
FILE* myfile;
errno_t errorcode = fopen_s(&myfile, "output.txt", "w");
if (myfile == NULL)
{
printf("Error");
}
FILE* data;
errno_t err = fopen_s(&data, "C:\SA\input.txt", "r");
//errno_t err = fopen_s(&data, "input.txt", "r");
if(data==NULL)
{
printf("file does not open");
}
return 0;
getchar();
}
发布的原始代码有 2 个主要问题:
"C:\SA\input.txt"
应该是 "C:\SA\input.txt"
或者只是 "C:/SA/input.txt"
。 Microsoft 的遗留系统使用 \
作为路径分隔符,它必须在 C 字符串中转义为 \
(在许多其他语言中也是如此)。 POSIX 系统上的传统路径分隔符是 /
,它在 Windows. 中也受支持
if(data==NULL);
是一个空语句的测试,因此没有任何反应。
- 请注意,您不应在 C 程序中使用 C++ headers,例如
<iostream>
。
这是一个简化版本:
#include <errno.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() {
FILE *myfile;
errno_t err = fopen_s(&myfile, "output.txt", "w");
if (err) {
fprintf(stderr, "Cannot open file %s: %s\n",
"output.txt", strerror(err));
return 1;
}
FILE *data;
err = fopen_s(&data, "C:\SA\input.txt", "r");
if (err) {
fprintf(stderr, "Cannot open file %s: %s\n",
"C:\SA\input.txt.txt", strerror(err));
return 1;
}
getchar(); // keep terminal window open
return 0;
}
这是我的第一个问题。如果你能帮助我,那将不胜感激。这段代码是关于我的论文的。我正在尝试写入一个文件并且它可以工作,但试图读取另一个文件却没有读取。我不能让它工作。屏幕上出现“文件打不开”。请帮助我,阅读文件。
#include <cstdio>
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
int main()
{
FILE* myfile;
errno_t errorcode = fopen_s(&myfile, "output.txt", "w");
if (myfile == NULL)
{
printf("Error");
}
FILE* data;
errno_t err = fopen_s(&data, "C:\SA\input.txt", "r");
//errno_t err = fopen_s(&data, "input.txt", "r");
if(data==NULL)
{
printf("file does not open");
}
return 0;
getchar();
}
发布的原始代码有 2 个主要问题:
"C:\SA\input.txt"
应该是"C:\SA\input.txt"
或者只是"C:/SA/input.txt"
。 Microsoft 的遗留系统使用\
作为路径分隔符,它必须在 C 字符串中转义为\
(在许多其他语言中也是如此)。 POSIX 系统上的传统路径分隔符是/
,它在 Windows. 中也受支持
if(data==NULL);
是一个空语句的测试,因此没有任何反应。- 请注意,您不应在 C 程序中使用 C++ headers,例如
<iostream>
。
这是一个简化版本:
#include <errno.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() {
FILE *myfile;
errno_t err = fopen_s(&myfile, "output.txt", "w");
if (err) {
fprintf(stderr, "Cannot open file %s: %s\n",
"output.txt", strerror(err));
return 1;
}
FILE *data;
err = fopen_s(&data, "C:\SA\input.txt", "r");
if (err) {
fprintf(stderr, "Cannot open file %s: %s\n",
"C:\SA\input.txt.txt", strerror(err));
return 1;
}
getchar(); // keep terminal window open
return 0;
}