我正在学习C并尝试解决问题。我有一个文本文件名elements.txt
,其中包含以下内容:
elements.txt
Carbon (from Latin: carbo "coal") is a chemical element ..
Oxygen is a chemical element with symbol O ..
Platinum is a chemical element with symbol Pt ...
Silicon is a chemical element with symbol Si ...
Titanium is a chemical element with symbol Ti ...
我想基于来自carbon.txt
的{{1}},oxygen.txt
,platinum.txt
,silicon.txt
和titanium.txt
等元素创建多个文件
这是我的源代码:
elements.txt
我确实创建了我的文件但是氧气以铂金打印出来,而铂,硅和钛则用钛印刷。似乎有一个错误,当我做一个while循环读取角色。不知道如何解决这个问题。有没有办法使用for-loop读取多个文件并写入多个文件?
非常感谢任何帮助!谢谢
答案 0 :(得分:2)
正如评论所示,为了使此块正确,您应该添加return
语句:
if(fp1 == NULL || fp2 == NULL || fp3 == NULL || fp4 == NULL || fp5 == NULL){
printf("Error opening %s for wrting. Program leaving",fn);
return; //add this statement to leave function
}
否则,语句程序终止将是一个谎言。
如果希望代码处理只包含空格的行的输入文件(而不是修改输入文件),请在将该行放入输出文件之前为仅包含空格的行添加测试。使用fgets()
,strstr()
和strlen()
将适合创建此类测试。
答案 1 :(得分:1)
在.txt
输入文件中,不同元素的内容由两个换行符分隔,而不是一个。尝试重写它:
Carbon is...
Oxygen is...
等。 (在段落末尾没有额外的换行符)。
或者,您可以检查是否存在2个换行而不是1换行,但这会更复杂。
(解释:该程序将碳写入fn1
,然后看到换行符并切换到fn2
,然后看到另一个换行符并切换到fn3
同样的事情发生在氧气段的末尾)。