我想将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 */
答案 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;