在C中的字符串中添加引号以与fopen一起使用

问题描述 投票:0回答:1

我正在编写一些代码来创建一个文件并保存一些文本。我用fopen打开我的文件。在fopen中,文件名必须是:“name.txt”。程序要求提供文件的名称和扩展名。我将名称和扩展名保存为其他字符串。我想要做的是创建一个新的字符串并将其他两个字符串添加到以下格式:“name.extension”我的输入是nameextension。所以我需要添加引号和它们之间的点。

我已经尝试过在这篇文章中回复的一些内容,但现在没有任何作用。我想我的字符串中剩余的空闲空间也存在与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);
}

感谢大家的支持!

c
1个回答
0
投票
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);
© www.soinside.com 2019 - 2024. All rights reserved.