尝试将多个输出写入.txt文件c ++

时间:2017-01-24 18:28:56

标签: c++ io

我想将inputtwo.h中的内容输出到txt文档中。该文件可以被命名为罚款。但是当我按要求输入输入时,txt中的返回值是一行文本,但格式错误

所以说我做了两个输入,命名为test.txt,然后输入“dog cat”作为输入,然后txt中的输出是“dogcatcatdog”,它应该是 “狗” “猫” “狗猫” “猫狗” 每个都应该在txt

中各自独行

以下代码是我的主文件

#include <stdio.h>
#include <iostream>
#include <fstream>
#include <string>

using namespace std;

int main() 
{
char q1[20];
char q2[20];

int x;

printf("Select number of keywords (integer between 1-10): \n");
scanf("%d", &x);

switch(x){

    case 1:{
        string fileName;
    printf("Input Filename\n");
    cin >> fileName;
    fileName += ".txt";
    ofstream createFile;
    createFile.open(fileName.c_str(), ios::app);

    printf("Input One Keywords: \n");
    scanf("%s", q1);
    createFile << ("%s\n", q1);
    createFile.close();
    return 0;
}
    case 2:{
        string fileName2;
    printf("Input Filename\n");
    cin >> fileName2;
    fileName2 += ".txt";
    ofstream createFile;
    createFile.open(fileName2.c_str(), ios::app);

    printf("Input Two Keywords: \n");
    scanf("%s %s", q1, q2);
#include "inputtwo.h"
    createFile.close();
    return 0;
} 

include inputtwo.h是

#ifndef INPUTTWO_H
#define INPUTTWO_H

    createFile << ("%s\n", q1);
    createFile << ("%s\n", q2);
    createFile << ("%s" "%s\n", q1, q2);
    createFile << ("%s" "%s\n", q2, q1);

#endif /* INPUTTWO_H */

1 个答案:

答案 0 :(得分:1)

在inputtwo.h中,您使用C ++输出(文件)流写入文件,该流不理解“%s \ n”形式的格式说明符。 ("%s\n", q1)是一个表达式,其中逗号,是一个运算符(请参阅this)。该运算符的结果为q1,并将其写入输出流(文件)。

总体结果是你写的q1,q2,q1,q2,q2和q1之间没有任何分隔符。

要修复,请停止混合C和C ++样式输出。使用C ++样式:

createFile << q1 << std::endl;
createFile << q2 << std::endl;  
createFile << q1 << " " << q2 << std::endl;
createFile << q2 << " " << q1 << std::endl;

将此扩展到程序的其余部分,将char q1[20];替换为std::string q1;(q2相同),然后替换

printf("Input One Keywords: \n");
scanf("%s", q1);

std::cout << "Input One Keyword: " << std::endl;
std::cin >> q1;