在C中的txt文件的同一行中写入不同的用户输入数据

时间:2013-10-22 23:07:50

标签: c++ file line

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

感谢您的帮助和关注!

2 个答案:

答案 0 :(得分:1)

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

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

但是将fgetscout混合起来有点奇怪,所以只需摆脱它并使用cin代替。例如:

cin >> book;

答案 1 :(得分:0)

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

  

换行符使fgets停止读取,但它被认为是a   函数的有效字符并包含在复制到的字符串中   海峡

因此,在数据结尾处,有一个\ n