BBS.ChinaUnix.net
今日推荐    首页 | 新闻 | Linux | 博客 | 论坛 | 人才 | 培训 | 知识库 | 资料 | 读书 | 手册 | 精华 | 下载 | 沙龙 | 搜索     
  会员: 密码: 免费注册 | 忘记密码 | 会员登录 | 搜索 | 帮助 


向各位高手请教一个c问题
首页 » 论坛 » C/C++ »  
[打印] [订阅] [收藏] [推荐给朋友] [本帖文本页]
DoctorHouse
侠客




UID:699499
注册:2008-5-1
最后登录: 2008-05-14
帖子:45
精华:0

可用积分:45
信誉积分:0
专家积分:0 (本版)

状态:...离线...

[个人空间] [短信] [博客]


顶部
1楼 发表于 2008-5-8 12:59 
小弟想将一篇英语文章放到txt文本里,
然后利用文本复制到文本中的过程,统计单词数
程序如下:
#include<stdio.h>
#include<string.h>

void main()
{
  FILE *in, *out;
  char infile[20],outfile[20],ch,string[100],c;
  int num = 0, word = 0, i = 0;
  
  printf("Enter the infile name:\n");
  scanf("%s",infile);
  printf("%s\n",infile);
  printf("Enter the outfile name:\n");
  scanf("%s",outfile);
  printf("%s\n",outfile);
  if ((in = fopen(infile,"rb"))==NULL)
  {
    printf("cannot open infile\n");
    exit(-1);
  }
  if ((out=fopen(outfile,"wb"))==NULL)
  {
    printf("cannot open outfile\n");
    exit(0);
  }
  for(i = 0; !feof(in); i++)
  {
     ch = fgetc(in);
     printf("%c",ch);
     fputc(ch,out);
     string = ch;
     printf("%c\n",string);
  }
  for (i = 0;(c = string) != '\0'; i++)
  {
    if( ch == ' ' && ch == '\n' )
      word = 0;
   else if(word == 0)
    {
      word = 1;
      num++;
    }
  }
   printf("There are %d words in the %s\n",num,infile);
   fclose(in);
   fclose(out);  
}
但输入的结果是:
Enter the infile name:
C\1.txt
C\1.txt
Enter the outfile name:
C\2.txt
C\2.txt
ii

aa
mm

aa

cc
hh
ii
nn
ee
ss
ee
!!

There are 1 words in the 1.txt
其中用了几个printf来检查程序
发现编译器好像不经过:
for (i = 0;(c = string) != '\0'; i++)
  {
    if( ch == ' ' && ch == '\n' )
      word = 0;
   else if(word == 0)
    {
      word = 1;
      num++;
    }
  }
为什么呢??
向各位高手请教了!
要怎样修改才行?



您对本贴的看法:鲜花[0] 臭蛋[0]
IBM 集群技术资源全面接触 |赠送linux之父推荐的经典书 | CU-2008奥运之春摄影赛 | 新版开张:《IT爱车族》分享香车美女
DoctorHouse
侠客




UID:699499
注册:2008-5-1
最后登录: 2008-05-14
帖子:45
精华:0

可用积分:45
信誉积分:0
专家积分:0 (本版)

状态:...离线...

[个人空间] [短信] [博客]


顶部
2楼 发表于 2008-5-8 18:34 
请问高手在哪???



您对本贴的看法:鲜花[0] 臭蛋[0]
IBM 集群技术资源全面接触 |赠送linux之父推荐的经典书 | CU-2008奥运之春摄影赛 | 新版开张:《IT爱车族》分享香车美女
caijimin   帅哥 (only_you)
风云使者




UID:244859
注册:2005-3-25
最后登录: 2008-05-17
帖子:413
精华:0

可用积分:523
信誉积分:100
专家积分:0 (本版)

状态:...离线...

[个人空间] [短信] [博客]


顶部
3楼 发表于 2008-5-8 18:42 
if( ch == ' ' && ch == '\n' )



您对本贴的看法:鲜花[0] 臭蛋[0]

__________________________________

往事并不如烟
IBM 集群技术资源全面接触 |赠送linux之父推荐的经典书 | CU-2008奥运之春摄影赛 | 新版开张:《IT爱车族》分享香车美女
DoctorHouse
侠客




UID:699499
注册:2008-5-1
最后登录: 2008-05-14
帖子:45
精华:0

可用积分:45
信誉积分:0
专家积分:0 (本版)

状态:...离线...

[个人空间] [短信] [博客]


顶部
4楼 发表于 2008-5-8 18:43 
string = ch;
应该改为string = ch;
以上都不变!



您对本贴的看法:鲜花[0] 臭蛋[0]
IBM 集群技术资源全面接触 |赠送linux之父推荐的经典书 | CU-2008奥运之春摄影赛 | 新版开张:《IT爱车族》分享香车美女
DoctorHouse
侠客




UID:699499
注册:2008-5-1
最后登录: 2008-05-14
帖子:45
精华:0

可用积分:45
信誉积分:0
专家积分:0 (本版)

状态:...离线...

[个人空间] [短信] [博客]


顶部
5楼 发表于 2008-5-8 18:45 
回复 #3 caijimin 的帖子

请问有什么区别?



您对本贴的看法:鲜花[0] 臭蛋[0]
IBM 集群技术资源全面接触 |赠送linux之父推荐的经典书 | CU-2008奥运之春摄影赛 | 新版开张:《IT爱车族》分享香车美女
DoctorHouse
侠客




UID:699499
注册:2008-5-1
最后登录: 2008-05-14
帖子:45
精华:0

可用积分:45
信誉积分:0
专家积分:0 (本版)

状态:...离线...

[个人空间] [短信] [博客]


顶部
6楼 发表于 2008-5-8 18:48 
#include<stdio.h>
#include<string.h>

void main()
{
  FILE *in, *out;
  char infile[20],outfile[20],ch,string[100],c;
  int num = 0, word = 0, i = 0;
  
  printf("Enter the infile name:\n");
  scanf("%s",infile);
  printf("%s\n",infile);
  printf("Enter the outfile name:\n");
  scanf("%s",outfile);
  printf("%s\n",outfile);
  if ((in = fopen(infile,"rb"))==NULL)
  {
    printf("cannot open infile\n");
    exit(-1);
  }
  if ((out=fopen(outfile,"wb"))==NULL)
  {
    printf("cannot open outfile\n");
    exit(0);
  }
  for(i = 0; !feof(in); i++)
  {
     ch = fgetc(in);
     printf("%c",ch);
     fputc(ch,out);
     string[i] = ch;
     printf("%c\n",string);
  }
  for (i = 0;(c = string) != '\0'; i++)
  {
    if( ch == ' ' && ch == '\n' )
      word = 0;
   else if(word == 0)
    {
      word = 1;
      num++;
    }
  }
   printf("There are %d words in the %s\n",num,infile);
   fclose(in);
   fclose(out);  
}



您对本贴的看法:鲜花[0] 臭蛋[0]
IBM 集群技术资源全面接触 |赠送linux之父推荐的经典书 | CU-2008奥运之春摄影赛 | 新版开张:《IT爱车族》分享香车美女
DoctorHouse
侠客




UID:699499
注册:2008-5-1
最后登录: 2008-05-14
帖子:45
精华:0

可用积分:45
信誉积分:0
专家积分:0 (本版)

状态:...离线...

[个人空间] [短信] [博客]


顶部
7楼 发表于 2008-5-8 18:53 
急啊!



您对本贴的看法:鲜花[0] 臭蛋[0]
IBM 集群技术资源全面接触 |赠送linux之父推荐的经典书 | CU-2008奥运之春摄影赛 | 新版开张:《IT爱车族》分享香车美女
doctorjxd   帅哥
光明使者


CU奥运火炬传递手2008
UID:327303
注册:2005-10-24
最后登录: 2008-05-15
帖子:927
精华:0

可用积分:1186
信誉积分:100
专家积分:100 (本版)

状态:...离线...

[个人空间] [短信] [博客]


顶部
8楼 发表于 2008-5-8 19:03 
wc -w yourfile



您对本贴的看法:鲜花[0] 臭蛋[0]
IBM 集群技术资源全面接触 |赠送linux之父推荐的经典书 | CU-2008奥运之春摄影赛 | 新版开张:《IT爱车族》分享香车美女
system888net   帅哥
风云使者




UID:304970
注册:2005-8-21
最后登录: 2008-05-17
帖子:501
精华:1

可用积分:514
信誉积分:100
专家积分:10 (本版)

状态:...离线...

[个人空间] [短信] [博客]


顶部
9楼 发表于 2008-5-8 19:04 
晕!你的这一段c和ch是何关系? i++了c 和ch 还在原地踏步呢!
for (i = 0;(c = string) != '\0'; i++)
  {
    if( ch == ' ' && ch == '\n' )
      word = 0;
   else if(word == 0)
    {
      word = 1;
      num++;
    }
  }

[ 本帖最后由 system888net 于 2008-5-8 19:11 编辑 ]



您对本贴的看法:鲜花[0] 臭蛋[0]
IBM 集群技术资源全面接触 |赠送linux之父推荐的经典书 | CU-2008奥运之春摄影赛 | 新版开张:《IT爱车族》分享香车美女
doctorjxd   帅哥
光明使者


CU奥运火炬传递手2008
UID:327303
注册:2005-10-24
最后登录: 2008-05-15
帖子:927
精华:0

可用积分:1186
信誉积分:100
专家积分:100 (本版)

状态:...离线...

[个人空间] [短信] [博客]


顶部
10楼 发表于 2008-5-8 19:08 
提醒楼主,标点符号的问题,连续空格的问题,换行断词的问题。



您对本贴的看法:鲜花[0] 臭蛋[0]
IBM 集群技术资源全面接触 |赠送linux之父推荐的经典书 | CU-2008奥运之春摄影赛 | 新版开张:《IT爱车族》分享香车美女

首页 » 论坛 » C/C++ »


 


Copyright © 2001-2008 ChinaUnix.net All Rights Reserved     联系我们:

感谢所有关心和支持过ChinaUnix的朋友们    转载本站内容请注明原作者名及出处

京ICP证041476号


清除 Cookies - ChinaUnix - Archiver - WAP - TOP

Processed in 0.045647 second(s), 4 queries , Gzip enabled