C++ 코드를 이용해서 짜야 되는데요..
텍스트 파일을 불러와서 단어수를 체크하고.
빈칸이 2개 이상 있으면 전부 1개로 수정해서
다른 텍스트 파일로 출력하는 거에요..
단어수 체크 한거는 콘솔창으로 띄워도 되고, 텍스트 파일 마지막에 써도 됩니다.
C 스타일로 짜면 안되고.. C++ 스타일로 짜야 되거든요..
단어 수 체크하는건 대충 알겠는데..
나머지는 정말 모르겠네요 ㅠ
도와주세요~!!
#include <iostream>
#include <fstream>
#include <cstdlib>
using namespace std;
#define WHT_SPC (cur == ' ' || cur == '\n' || cur == '\t')
void main() {
ifstream fsInFile;
ofstream fsOutFile;
cout << "단어수 체크와 불필요한 공백을 제거 후 다른 파일로 출력하는 프로그램 입니다.\n";
fsInFile.open("input.txt");
if (!fsInFile) {
cerr << "Error 100 opening input.txt\n";
exit (100);
}
fsOutFile.open("output.txt");
if (!fsOutFile) {
cerr << "Error 102 opening output.txt\n";
exit (102);
}
char cur;
char word = 'O';
int countWd = 0;
while (fsInFile.get(cur)) {
if (WHT_SPC)
word = 'O';
else if (word == 'O') {
countWd++;
word = 'I';
}
fsOutFile.put(cur);
}
cout << "\nThe number of words is " << countWd << endl;
fsInFile.close();
fsOutFile.close();
}
우선, word = 'O'; word = 'I'; // 이것들이 뭔지 몰라서., 그 내용은 무시하고 설명드릴께요~.
그냥 while문안에 넣으면 될거 같네요....
while(get...){
if(' '== cur){ // 공백이면,
fsInFile.get(cur);
if(' '== cur){ // 공백이 하나 더 있으면 즉 공백이 두개이면..
fsOutFile.put(' '); // 공백을 하나만 출력하고,
}else{ // 연속된 공백이 아니면, 즉 공백이 하나이면, (다른 넘들처럼) 그냥 처리..
fsOutFile.put(cur);
}else{ // 공백이 없으면
// 올려 주신 소스의 if(WHT_SPC) 부분에도 SPACE 조건이 있으므로 그 부분을 처리하는 것은 좀 생각해
// 보셔야 할거 같네요 .^^
}
}
// 그외 다른 함수들..
}