我的文件有一个简单的问题,当我在FILE *中读取然后在删除标点符号后再次将其打印出来时,它只会打印出文件的底部部分。我的输入位于此问题的底部。问题是:有没有理由为什么只打印出文件的一部分?
这是我的文件中的代码:
int currentLetter= 0;
string word = "";
FILE * input;
input = fopen("test.txt", "r");
if (input == NULL)
{
perror("Error opening file");
}
else{
while(currentLetter != EOF){//Loop Through File
do{// GETWORD
currentLetter = fgetc(input);
if(currentLetter == '?' || currentLetter == '<'|| currentLetter == '>'|| currentLetter == ':' ||currentLetter == '\"')
word += ' ';
if (isalpha(currentLetter) || isdigit(currentLetter) || currentLetter == '-' || currentLetter == '\'' )
{
word += tolower(currentLetter);
}
}while(currentLetter != EOF && currentLetter != ' ' && currentLetter != '\n');
if (word != " " && !(word.find_first_of("0123456789") < word.length()))
{
cout<< word << endl;
// insert(word); This will called the b
}
word = "";
}
}
这是我的输入(非常大): 五个难忘文本的集合。
&#34;我自己完全相信,如果所有人都尽职尽责,如果没有 被忽视了,如果做出最好的安排,就像它们一样 我们将证明自己再一次能够保卫我们的岛屿 回到家乡,战胜风暴,并超越了威胁 暴力,必要时多年,必要时单独使用。无论如何,那 是我们要尝试做的。这是他的决心 陛下政府 - 他们中的每一个人。这是议会的意愿 和国家。与大英帝国和法兰西共和国有联系 在他们的事业和需要中,他们将一起捍卫死亡 他们原生的土地,像最好的同志一样互相帮助 他们的力量。尽管大片的欧洲和许多古老的和 着名的国家已经下降或可能陷入盖世太保和 纳粹统治的所有可憎的机器,我们不会标记或失败。我们 我们将在法国战斗,我们将继续战斗 在海洋和海洋中,我们将以越来越大的信心与之战斗 在空中不断增强的力量,我们将保卫我们的岛屿,无论如何 费用可能是,我们将在海滩上战斗,我们将战斗 登陆场地,我们将在田野和街道上战斗,我们 要在山上作战;我们永远不会投降,即使是投降 我暂时不相信,这岛或其中很大一部分都是 征服和挨饿,然后我们的帝国超越海洋,武装和 由英国舰队守卫,将继续奋斗,直到,在 上帝的美好时光,新世界,充满力量和力量,步伐 拯救和解放老人。&#34; --Winston 丘吉尔,1940年
&#34; Fourscore和七年前我们的父亲提出了这个问题 大陆一个新的国家,在自由中孕育并致力于 所有人都是平等的主张。现在我们正在搞一个 伟大的内战,测试那个国家或任何国家是如此 构思和如此专注可以长期忍受。我们遇到了一个伟大的 战争的战场。我们已经致力于其中的一部分 田野作为那些在这里献出生命的人的最后安息之所 那个国家可能会生活。这完全合适 我们应该这样做。但从更广泛的意义上说,我们不能奉献,我们 不能奉献,我们不能让这个地方神圣化。勇敢的人,活着 在这里挣扎的死者已经把它奉为远远超过我们的穷人 增加或减少的力量。世界将很少注意也不会长久记住 我们在这里说的是什么,但它永远不会忘记他们在这里做了什么。它是 对我们来说,生活宁愿专注于未完成的工作 到目前为止,他们在这里战斗的人如此高尚。它是 而是让我们在这里致力于以前的伟大任务 我们 - 从这些荣幸的死者那里,我们对此更加投入 他们给出了最后一个全力投入的原因 - 我们 在这里高度决心,这些死者不会白白死去 这个在上帝之下的国家将有一个新的自由诞生,那个 人民的政府,人民的政府,不会的 从地球上消失。&#34; - 阿布拉姆林肯
我的朋友们,今天我告诉你,尽管有困难和困难 沮丧的那一刻,我还有一个梦想。这是一个深刻的梦想 植根于美国梦。我梦想有一天这个国家 将起来并实现其信条的真正含义:&#34;我们坚持 这些事实是不言而喻的:人人生而平等。&#34;一世 有一天梦想有一天在佐治亚州的红色山丘上的儿子 以前的奴隶和前奴隶主的儿子将能够坐下来 在一个兄弟情谊的桌子上一起来。有一天我有一个梦想 甚至是密西西比州,一个荒漠的国家,与闷热的国家 不公正和压迫的热度,将变成一片绿洲 自由和正义。我有一个梦想,我的四个孩子将在某一天 生活在一个他们不会被他们的颜色评判的国家 皮肤,但由他们的性格的内容。我今天有一个梦想。 --- 马丁路德金
威廉·莎士比亚的朱莉丝·凯撒的生与死
SCENE II。公共场所。
蓬勃发展。输入CAESAR;安东尼,为课程; CALPURNIA,PORTIA, DECIUS BRUTUS,CICERO,BRUTUS,CASSIUS和CASCA;一大群人 以下,其中包括一个占卜者
凯撒让我的男人对我很胖;光滑的男人和男人 比如睡觉o&#39;夜晚:Yond Cassius有着瘦弱和饥饿的样子;他 想太多了:这样的人很危险。
安东尼不要害怕他,凯撒;他并不危险;他是一位高贵的罗马人 并且很好。
凯撒他会更胖吗!但我不担心他:但如果我的名字是 容易害怕,我不知道那个我应该尽快避免的人 备用卡西乌斯。他读的很多;他是一个伟大的观察者,他看起来 通过男人的行为:他不喜欢戏剧,就像你一样, 安东尼;他听不到音乐;他很少微笑,并在这种微笑中微笑 好像他嘲笑自己并蔑视他的精神可以转移到 任何事情都要微笑。这样的人,他永远不会心灵轻松 他们看到比自己更大,因此他们非常 危险的。我宁愿告诉你什么是恐惧,而不是我害怕; 因为我总是凯撒。来吧我的右手,因为这只耳朵是聋子, 并且真实地告诉我你对他的看法。&#34; Monty Python和圣杯&#34;
场景25 HEAD KNIGHT:呃! 倪! 倪! 倪!阿瑟:你是谁? HEAD KNIGHT:我们是谁说的骑士......呃!阿瑟:不!不是说倪的骑士!头 骑士:一样!贝德米尔:他们是谁? HEAD KNIGHT:我们是 神圣话语的守护者:倪,笔,和 东东口碑!随机:Nee-wom!阿瑟:那些听到他们的人很少能活着讲述这个故事! HEAD KNIGHT:谁说倪的骑士 要求牺牲! ARTHUR:倪骑士,我们很简单 寻求旅行的旅行者 住在这些树林之外的魔法师。 HEAD KNIGHT:呃!倪!倪!倪! ARTHUR和PARTY:哦,哦! HEAD KNIGHT:我们会的 说&#39; nee&#39;如果你不安抚我们,请再次向你阿瑟:嗯,什么 你想要的吗? HEAD KNIGHT:我们想......一个灌木丛! [戏剧性的和弦] ARTHUR:什么? HEAD KNIGHT:呃!倪! ARTHUR和PARTY:哦,哦!阿瑟:拜托,拜托!不再!我们 应找到一个灌木丛。 HEAD KNIGHT:你必须带着一个回到这里 灌木丛,否则你会 从来没有活过这块木头!阿瑟:倪骑士,你是公平的,我们会回来的 带着灌木丛。 HEAD KNIGHT:一个看起来不错的人。阿瑟:当然。 HEAD KNIGHT:并不太贵。阿瑟:是的。
HEAD KNIGHTS:现在......去吧!场景11
GALAHAD:Zoot! DINGO:不,我是Zoot的同卵双胞胎妹妹, 巴丁格。 GALAHAD:哦,好吧,对不起,我 - DINGO:你在哪儿 要去哪里?加拉哈德:我寻求圣杯!我已经看到了,在这里 城堡! DINGO:不!不好了!糟糕,糟糕的Zoot!加拉哈德:这是什么? DINGO:哦,邪恶,坏,顽皮的Zoot!她一直在下车 到我们的灯塔,我记得,它是圣杯状的。它不是 我们第一次遇到这个问题。 GALAHAD:这不是真正的圣杯吗? DINGO:哦,邪恶,坏,顽皮,邪恶的Zoot!哦,她是一个 淘气 那个人,她必须支付罚款 - 而在这里的城堡炭疽病,我们 只有一个惩罚,可以点亮圣杯形状的灯塔。您 必须将她绑在床上并打她!女孩:打屁股!打屁股! DINGO:你必须好好打她。在你拥有之后 打了她,你 可以随心所欲地对待她。然后,打我。各种各样的女孩:打我一惊。 和我。 和我。 DINGO:是的,是的,你必须给我们一个好的打屁股!女孩:打屁股!打屁股!
场景35 ARTHUR:它就在那里!死亡之桥!罗宾:哦, 大。骑士:看! ARTHUR:第24幕的老人! 贝德米尔:他在这做什么?阿瑟:他是这个世界的守护者 死亡之桥。他问每个人 旅行者五个问题 - 骑士:三个问题。阿瑟:三个问题。回答五个问题的人 - 骑士:三个 的问题。阿瑟:三个问题可能会安全交叉。 ROBIN: 如果你的问题出错怎么办?阿瑟:那你被投入了 永恒的危险峡谷。罗宾:哦,我不会去。骑士:谁 要回答问题?阿瑟:罗宾爵士!罗宾:对吗? 阿瑟:勇敢的罗宾爵士,你走吧。罗宾:嘿!我很棒 理念。 Launcelot为什么不去? LAUNCELOT:是的,让我走吧,我的 列日。我会单枪带他。 我要向东北做一个假动作 - 阿瑟:不,不,坚持下去,坚持下去,坚持下去!回答这五个问题 问题 - 骑士:三个问题。 ARTHUR:尽可能提出三个问题。我们会看......和 祈祷。 LAUNCELOT:我理解,我的君主。阿瑟:祝你好运,勇敢的朗塞洛特先生。上帝与你同在。保持者:停下来!谁 穿过死亡之桥必须回答我 这些问题三,他看到的另一面。 LAUNCELOT:向我提问,桥梁管理员。我不害怕。保持者:什么 是你的名字? LAUNCELOT:我的名字是Camelot的Launcelot爵士 保持者:你的任务是什么? LAUNCELOT:寻求圣杯 保持者:你最喜欢的颜色是什么? LAUNCELOT:蓝色。 KEEPER: 对。就行了。 LAUNCELOT:哦,谢谢。非常感谢你。 罗宾:这太简单了!保持者:停下来!谁接近桥梁 死亡必须回答我 这些问题三,他看到的另一面。罗宾:向我提问,桥梁管理员。我不害怕。保持者:什么是 你的名字?罗宾:卡米洛特的罗宾爵士。保持者:你的是什么 寻求?罗宾:寻求圣杯。保持者:什么是 亚述的首都?罗宾:我不知道! Auuuuuuuugh!
保持者:停下来!你叫什么名字?加拉哈德:卡米洛特的加拉哈德爵士。 保持者:你的任务是什么?加拉哈德:我寻求圣杯 保持者:你最喜欢的颜色是什么?加拉哈德:蓝色。没有yel-- Auuuuuuuugh!保持者:嘿嘿。停止!你叫什么名字? ARTHUR: 这是英国国王亚瑟。保持者:你的任务是什么? 阿瑟:寻求圣杯。保持者:什么是空速 空腹的速度?阿瑟:你的意思是什么?一个 非洲或欧洲的燕子?保持者:什么?我不知道! Auuuuuuuugh!贝德米尔:如何了解燕子? ARTHUR: 好吧,当你成为一个知道的国王时,你必须知道这些事情。
我的输出:
答案 0 :(得分:5)
问题是文本滚动到命令窗口的上边缘并丢失。右键单击标题栏左上角的图标,打开&#34;属性,&#34;并将窗口/屏幕缓冲区大小增加到大量。然后再试一次。
或者,在命令行运行它并将输出发送到具有>
字符的文件。
assignment.exe > completeOutput.txt
答案 1 :(得分:2)
给我Stiles的理由是完全正确的。只是为了尝试我修改你的代码打开并写入另一个文件。它打印了整个文本。
int currentLetter = 0;
string word = "";
FILE * input;
FILE * result ;
int err = 0;
int errres = 0;
errres = fopen_s(&result, "result.txt", "a+");
err = fopen_s(&input,"test.txt", "r");
if (err != 0)
{
//perror("Error opening file");
cout << "error" << endl;
}
else{
while (currentLetter != EOF){//Loop Through File
do{// GETWORD
currentLetter = fgetc(input);
if (currentLetter == '?' || currentLetter == '<' || currentLetter == '>' || currentLetter == ':' || currentLetter == '\"')
word += ' ';
if (isalpha(currentLetter) || isdigit(currentLetter) || currentLetter == '-' || currentLetter == '\'')
{
word += tolower(currentLetter);
}
} while (currentLetter != EOF && currentLetter != ' ' && currentLetter != '\n');
if (word != " " && !(word.find_first_of("0123456789") < word.length()))
{
//cout << word << endl;
// insert(word); This will called the b
if (errres == 0)
{
fputs(word.c_str(), result);
//fprintf(result, "%s", word);
}
}
word = "";
}
fclose(result);
}
}
注意: - 结果没有格式化,我编写的代码只是为了显示。