C语言中用户输入的文件路径

3

我找不到针对我的问题的具体答案。我是一个非常初级的人,刚开始学习,并在课堂上学会了如何从CodeBlocks中创建文件。我把代码带回家,但它无法运行,因为它不在同一台计算机上。所以,想法是制作一个东西,允许用户选择新形成的.txt文件的路径。当我手动插入“c:\example.txt”或类似的东西时,代码会创建一个名为“example.txt”的文件,但当我将其作为输入发送时,它根本就不起作用。为什么?

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main()
{
    FILE *a=NULL;
    char s[50];
    puts("Enter the path of the file: ");
    fgets(s,50,stdin);
    a=fopen(s,"w");
    if(a==NULL)
        exit(1);
    else
        printf("Successful input");
}

所以整个问题是 fgets 函数在末尾添加了 \n?有没有其他想法可以让它工作?虽然它能完成任务,但我只想尽可能地简化它!谢谢! - slavko
1个回答

2
整个问题的根源在于fgets函数在结尾处添加了\n?还有其他解决方法吗? 您可以将之替换为
    fgets(s,50,stdin);

使用

    scanf("%49[^\n]%*c", s);

- 此代码将输入读取到s中,不包括\n字符,只要其大小允许,并消耗了\n,以便它不会妨碍可能的后续输入。

你也可以使用“scanf%s”来输入。确保输入长度不要太长等方面总是有一些挑战,但如果你信任用户并不期望傻瓜式的输入(就像在这种情况下),那么这将是最直接的方法。(另一个要求是文件路径不包含空格,而你的解决方案将允许它们存在。) - Peter - Reinstate Monica
@Peter A. Schneider - 另一个要求是文件路径不包含空格 - 这在哪里说明了? - Armali
1
我的提议要求,这不是原问题的一部分,因此我的提议不是完整的解决方案(与您的答案相反)。我的提议非常简单,通常适用于像OP的路径输入这样的快速事项。 - Peter - Reinstate Monica

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接