c - 如何从用户输入将多个字符串写入文件?

标签 c

所以我有这个 C 程序,我希望用户用他们选择的文件名创建一个文件(工作正常),然后将内容写入所述文件,但这是行不通的。我当前的代码所做的是仅从用户输入中写入 1 个字符串(第一个),即使我想将所有文本保存到文件中。我怎样才能做到这一点?我整个下午都在尝试自己解决这个问题(使用 EOF、fprintf 等),但无济于事。提前致谢!

void createFile()
{
char userfilename[40];
char filecontent[1000];
FILE *filePointer;

printf("How do you want to name your file? ");
scanf("%s", &userfilename);
filePointer = fopen(userfilename, "w");

printf("Enter file content: ");
scanf("%s", &filecontent);
fputs(filecontent, filePointer);

fclose(filePointer);
printf("Successful.");
}

最佳答案

问题是scanfscanf 在读取第一个空白字符后终止。使用 getline() 代替:

void createFile()
{
    char userfilename[40];
    char *filecontent;
    FILE *filePointer;
    size_t len = 0;     //For reading length of line
    ssize_t read;       //For number of characters read

    printf("How do you want to name your file? ");
    scanf("%s", &userfilename);
    filePointer = fopen(userfilename, "w");

    printf("Enter file content: ");
    while ((read = getline(&filecontent, &len, stdin)) != -1) {
        fprintf(filePointer, "%s", filecontent);
    }
    fclose(filePointer);
    printf("Successful.");
}

这应该有效。 阅读有关 getline here 的信息.

关于c - 如何从用户输入将多个字符串写入文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40749674/

相关文章:

c - 为什么当unsigned long可用时我们需要uint64_t?

c - 两种方式的套接字通信

c - LoadLibraryExW 加载 User32.dll 失败

c - 二分算法代码中的逻辑错误

c - 为什么是 SIGSEGV?

c++ - 快速调整 mmap 文件的大小

c - FILE 结构分配在哪里?

C 指针错误

c - 如何使用 execlp 将命令行参数传递给 C 程序

c - Netbeans:如何在 C 和 C++ 编译器之间切换?