この問題は一晩中私を悩ませました.Thanks!
このコードは、ファイルの最後の行を 2 回書き込みます。
#include <iostream>
#include <fstream>
#include <string.h>
using namespace std;
const int strSize = 1000;
int main(int argc,char *argv[])
{
ifstream infile(argv[1]);
if(!infile) cerr<<"infile error!"<<endl;
ofstream outfile(argv[2]);
int sequenceNum = 1;
char str[strSize];
while(infile){
infile.getline(str,strSize);
if(sequenceNum>469)
str[0] = '2';
else if(sequenceNum>67)
str[0] = '4';
else if(sequenceNum>1)
str[0] = '1';
else
str[0] = '3';
outfile<<str<<endl;
++sequenceNum;
}
return 0;
}
isの後infile.getline(str,strSize);
、str が変更されていない場合、null はなぜですか? しかし、その後、最終行になります。str
NULL
if(sequenceNum>469)
str
このコードは、最後の行を 1 回だけ書き込みます。
#include <iostream>
#include <fstream>
#include <string.h>
using namespace std;
const int strSize = 1000;
int main(int argc,char *argv[])
{
ifstream infile(argv[1]);
if(!infile) cerr<<"infile error!"<<endl;
ofstream outfile(argv[2]);
int sequenceNum = 1;
char str[strSize];
while(infile){
infile.getline(str,strSize);
if(strlen(str) != 0){//The key is this sentence.
if(sequenceNum>469)
str[0] = '2';
else if(sequenceNum>67)
str[0] = '4';
else if(sequenceNum>1)
str[0] = '1';
else
str[0] = '3';
outfile<<str<<endl;
++sequenceNum;
}
}
return 0;
}