我有一个这种格式的文件:
# This is one comment
# Another comment
但问题是运行以下代码时:
char c;
string string1;
while ((c = fgetc(file)) == '#') {
string1 += c;
while ((c = fgetc(file)) != '\n') {
string1 += c;
}
}
输出结果为:
# This is one comment# Another comment
我知道在第二个中,第一个注释中的'\ n'没有保存在string1中,但是如何用这种方法或类似方法解决呢?
答案 0 :(得分:1)
试试这个:
char c;
string string1;
while ((c = fgetc(file)) == '#') {
string1 += c;
while ((c = fgetc(file)) != '\n') {
string1 += c;
}
string1 += c;
}
因为在程序退出第二个循环后, c 的值为'\ n',您可以将它放在 string1
中这是我的测试.cpp文件,您可以尝试一下:
#include <iostream>
#include <string>
#include <cstdio>
using namespace std;
int main(){
char c;
string string1;
FILE * file = fopen("test.in","r");
while ((c = fgetc(file)) == '#') {
string1 += c;
while ((c = fgetc(file)) != '\n') {
string1 += c;
}
string1 += c;
}
cout<<string1<<endl;
return 0;
}
“test.in”是您想输入的文字。
感谢。