(c=getc(ifp))!=EOF

lianggg911 2008-11-05 09:40:23
今天下午帮一个朋友看这个程序,是统计某个文件里的字符数,看着代码没有问题,只是最后结果不对,请大家看看:
/* count uppercase letters in a file */
#include <stdio.h>
#include <stdlib.h>
int main(int argc,char *argv[])
{
int c,i,letter[26];
FILE *ifp,*ofp;
if(argc!=3){
printf("\n%s%s%s\n\n%s\n\n",
"usage: ",argv[0],"infile outfile",
"The uppercase letters in infile will be counted.",
"The result will be written in outfile.");
exit(1);
}
ifp=fopen(argv[1],"r");
ofp=fopen(argv[2],"w");
for(i=0;i<26;++i)
letter[i]=2;
while((c=getc(ifp))!=EOF)
if(c>='A'&&c<='Z')
++letter[c-'A'];

for(i=0;i<26;++i){
if(i%6==0)
putc('\n',ofp);
fprintf(ofp,"%c:%5d ",'A'+i,letter[i]);
}
putc('\n',ofp);
return 0;

}
在f1文本文件中输入“ASDSAFAF”,,在f2文件中显示统计的结果,但是结果不对啊:
A: 2 B: 2 C: 2 D: 2 E: 2 F: 2
G: 2 H: 2 I: 2 J: 2 K: 2 L: 2
M: 2 N: 2 O: 2 P: 2 Q: 2 R: 2
S: 2 T: 2 U: 2 V: 2 W: 2 X: 2
Y: 2 Z: 2
应该是上面蓝色的部分代码有问题,请大家帮我找找看,谢谢
...全文
254 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
sys0004 2008-11-06
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 lianggg911 的回复:]
当输入noname f1 f3接着点击回车后,系统给出一个提示:Null pointer assignment,请问这个提示表示什么啊?
谢谢
[/Quote]

怀疑你的文件没打开,根本就没读到数据。
ifp=fopen(argv[1],"r");
判断下ifp是否为NULL??
太乙 2008-11-06
  • 打赏
  • 举报
回复
#include <stdio.h> 
#include <stdlib.h>
int main(int argc,char *argv[])
{
int c,i,letter[26];
FILE *ifp,*ofp;
if(argc!=3){
printf("\n%s%s%s\n\n%s\n\n",
"usage: ",argv[0],"infile outfile",
"The uppercase letters in infile will be counted.",
"The result will be written in outfile.");
exit(1);
}
ifp=fopen(argv[1],"r");
ofp=fopen(argv[2],"w");
for(i=0;i <26;++i)
letter[i]=0;
while((c=getc(ifp))!=EOF)
if(c>='A'&&c <='Z')
++letter[c-'A'];
for(i=0;i <26;++i){
if(i%6==0)
putc('\n',ofp);
fprintf(ofp,"%c:%5d ",'A'+i,letter[i]);
}
putc('\n',ofp);
fclose(ifp);
fclose(ofp);
return 0;

}
======================================


A: 3 B: 0 C: 0 D: 1 E: 0 F: 2
G: 0 H: 0 I: 0 J: 0 K: 0 L: 0
M: 0 N: 0 O: 0 P: 0 Q: 0 R: 0
S: 2 T: 0 U: 0 V: 0 W: 0 X: 0
Y: 0 Z: 0








sevenhu 2008-11-06
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 sys0004 的回复:]
问题1:
for(i=0;i <26;++i)
letter[i]=0;
问题2:
文件写完没有关闭。
[/Quote]

UP!~
cyj626 2008-11-06
  • 打赏
  • 举报
回复
定义的int最好初始化下
cyj626 2008-11-06
  • 打赏
  • 举报
回复
数字字符没有处理语句?
lianggg911 2008-11-06
  • 打赏
  • 举报
回复
当输入noname f1 f3接着点击回车后,系统给出一个提示:Null pointer assignment,请问这个提示表示什么啊?
谢谢
lianggg911 2008-11-06
  • 打赏
  • 举报
回复
回一楼和四楼的,还是不行啊,我把你们的代码直接复制过去后,出来的结果是:
A: 0 B: 0 C: 0 D: 0 E: 0 F: 0
G: 0 H: 0 I: 0 J: 0 K: 0 L: 0
M: 0 N: 0 O: 0 P: 0 Q: 0 R: 0
S: 0 T: 0 U: 0 V: 0 W: 0 X: 0
Y: 0 Z: 0
会不会是机子与机子直接有差异啊?对数据类型的处理方式不同?
sys0004 2008-11-06
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 lianggg911 的回复:]
我使用的就是绝对路径啊:
D:\>cd D:\vc6\noname 回车
D:\vc6\noname>noname f1 f2 回车
然后系统显示:
D:\vc6\noname>
[/Quote]

noname "C:\test\test1.txt" "C:\test\test2.txt"
lianggg911 2008-11-06
  • 打赏
  • 举报
回复
我使用的就是绝对路径啊:
D:\>cd D:\vc6\noname 回车
D:\vc6\noname>noname f1 f2 回车
然后系统显示:
D:\vc6\noname>
sys0004 2008-11-06
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 lianggg911 的回复:]
是的,9楼说的对,的确是文件没打开,根本就没读到数据,该怎么修改呢?使用哪一个函数打开文件呢?
[/Quote]

使用绝对路径打开应该就没问题了。
bxhzct 2008-11-06
  • 打赏
  • 举报
回复
文件的路径设置问题吧
lianggg911 2008-11-06
  • 打赏
  • 举报
回复
在使用VC6.0进行单步调试时走到while((c=getc(ifp))!=EOF)一行出现这个信息:
Unhandled exception in noname.exe:0xc0000005:Access Violation
lianggg911 2008-11-06
  • 打赏
  • 举报
回复
是的,9楼说的对,的确是文件没打开,根本就没读到数据,该怎么修改呢?使用哪一个函数打开文件呢?
sys0004 2008-11-05
  • 打赏
  • 举报
回复
问题1:
for(i=0;i <26;++i)
letter[i]=0;
问题2:
文件写完没有关闭。
sys0004 2008-11-05
  • 打赏
  • 举报
回复

#include <stdio.h>
#include <stdlib.h>
int main(int argc,char *argv[])
{
int c,i,letter[26];
FILE *ifp,*ofp;

if(argc!=3){
printf("\n%s%s%s\n\n%s\n\n",
"usage: ",argv[0],"infile outfile",
"The uppercase letters in infile will be counted.",
"The result will be written in outfile.");
exit(1);
}

ifp=fopen(argv[1],"r");
ofp=fopen(argv[2],"w");

for(i=0;i <26;++i)
letter[i]=0;

while((c=getc(ifp))!=EOF)
if(c>='A'&&c <='Z')
++letter[c-'A'];

fclose(ifp);

for(i=0;i <26;++i){
if(i%6==0)
putc('\n',ofp);
fprintf(ofp,"%c:%5d ",'A'+i,letter[i]);
}
putc('\n',ofp);
fclose(ofp);

return 0;
}

70,037

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧