1

我想编写一个简单的程序,它从用户输入中收集数据以保存到 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!"

感谢您的帮助和关注!

4

2 回答 2

1

fgets函数在缓冲区中包含换行符,因此当您编写它们时,这些换行符将出现在myfile. 您可以使用以下内容简单地删除换行符:

book[strlen(book)-1] = '\0';

但是开始混合fgets有点奇怪cout,所以只需摆脱它并使用它cin。例如:

cin >> book;
于 2013-10-22T23:29:10.773 回答
0

来自 fgets 文档:http ://www.cplusplus.com/reference/cstdio/fgets/

换行符使 fgets 停止读取,但它被函数视为有效字符并包含在复制到 str 的字符串中。

所以,在读取数据的末尾,有一个\n

于 2013-10-22T23:26:51.250 回答