我正在编写一些代码来创建一个文件并保存一些文本。我用fopen
打开我的文件。在fopen
中,文件名必须是:“name.txt”。程序要求提供文件的名称和扩展名。我将名称和扩展名保存为其他字符串。我想要做的是创建一个新的字符串并将其他两个字符串添加到以下格式:“name.extension”我的输入是name
和extension
。所以我需要添加引号和它们之间的点。
我已经尝试过在这篇文章中回复的一些内容,但现在没有任何作用。我想我的字符串中剩余的空闲空间也存在与fopen
一起使用的问题?
这是我的代码:
char n[BUFSIZ];
char x[BUFSIZ];
char naam[BUFSIZ];
printf("\nGeef een naam voor het bestand in: ");//name for file
scanf("%s", n);
printf_s("\nGeef een extensie in voor de file: ");//extension for file
scanf("%s", x);
strcat(naam, """");
strcat(naam, n);
strcat(naam, ".");
strcat(naam, x);
puts(naam);
FILE *fp;
if ((fp = fopen(naam, "w")) == NULL)
{
printf("het bestand kon niet correct worden aangemaakt\n");
printf("werkt niet\n");
getchar();
exit(1);
}
编辑:
所以我解决了我的字符串。第一个需要是一个strcpy。当我打印naam
时输出似乎很好,但打开文件时我仍然有错误。
这是代码:
char n[BUFSIZ];
char x[BUFSIZ];
char naam[BUFSIZ];
printf("\nGeef een naam voor het bestand in: ");//name for file
scanf("%s", n);
printf_s("\nGeef een extensie in voor de file: ");//extensio for file
scanf("%s", x);
strcpy(naam, "\"");
strcat(naam, n);
strcat(naam, ".");
strcat(naam, x);
strcat(naam, "\"");
printf("%s", naam);
FILE *fp;
if ((fp = fopen(naam, "w")) == NULL)
{
printf("De file kon niet correct worden geschreven\n");
getchar();
exit(1);
}
感谢大家的支持!
strcat(naam,"\"\"");
这就是方法。你必须逃避它们,以便它们被认为是字符串文字的传递。
如果你想要它在文件名周围,那么sprintf
是要走的路。
还不清楚你为什么要在naam
中连接。
如果naam
是这样的filename.txt
然后它将是在上面提到的任何这些操作将是
"filename.txt"
或filename.txt""
。
鉴于它将在fopen
中使用的上下文,你可以更清楚地做到这一点。
const char *filename = "file.txt";
FILE *fp = fopen(filename,"r");
编辑(是这是为了说明 - 使用strcpy
等)
对于OP,正确的代码将是
strcpy(naam, n);
strcat(naam, ".");
strcat(naam, x);
...
if ((fp = fopen(naam, "w+")) == NULL){
fprintf(fp,"Hello world");
}
fclose(fp);