我想编写一个简单的程序,它从用户输入中收集数据以保存到txt文件中。 我找到了几种收集和保存数据的方法,但我找不到将用户输入的不同实例写入txt文件的同一行的方法。 这是我的代码:
#include <iostream>
#include <fstream>
using namespace std;
int main () {
char book[30];
char author[30];
char quote[64];
ofstream myfile;
myfile.open ("myfile.txt", ios::in | ios::ate);
if (myfile.is_open())
{
cout << "Enter the name of the Book: ";
fgets(book, 30, stdin);
cout << "Enter the name of the Author: ";
fgets(author, 30, stdin);
cout << "Type the quote: ";
fgets(quote, 64, stdin);
myfile << ("%s;",book) << ("%s;",author) << ("%s;",quote);
myfile.close();
}
else cout << "Unable to open file";
return 0;
}
文件的输出是:
Book01
Author01
"This is the quote!"
我想站在同一条线上:
Book01; Author01; "This is the quote!"
感谢您的帮助和关注!
答案 0 :(得分:1)
fgets
函数在缓冲区中包含换行符,因此当您编写它们时,这些换行符将显示在myfile
中。您可以使用以下内容删除换行符:
book[strlen(book)-1] = '\0';
但是将fgets
与cout
混合起来有点奇怪,所以只需摆脱它并使用cin
代替。例如:
cin >> book;
答案 1 :(得分:0)
来自fgets doc:http://www.cplusplus.com/reference/cstdio/fgets/
换行符使fgets停止读取,但它被认为是a 函数的有效字符并包含在复制到的字符串中 海峡
因此,在数据结尾处,有一个\ n