所以我有这个 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.");
}
最佳答案
问题是scanf
。 scanf
在读取第一个空白字符后终止。使用 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/