| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1136 人关注过本帖
标题:编译通过,但运行错误
只看楼主 加入收藏
luo113927
Rank: 1
等 级:新手上路
帖 子:173
专家分:0
注 册:2006-3-15
收藏
 问题点数:0 回复次数:10 
编译通过,但运行错误
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
FILE *fp;
int  strcomp  ( char strin[], char strcp[] );//比较字符串
int strlength( char *s );//求长度
void clean ( char *s );//清空数组
int main( void )
{
int k=0, ci=0, ch=0;//ch为记录换行次数
char strin[20]={"0"}, strcp[20]={"0"};//strin:为存储要查询的字符串 strcp:存储从文件里读取的一个字符串
 if( (fp=fopen("E:\\text.txt","r")) == NULL )
{ printf("无法打开该文本文件\n"); return(0); }
 for( ; ; )
{
printf("0:退出; 1:进入查询;\n");
scanf("%d",&k);
getchar();
if( 0==k ) exit(0);
printf("请输入要查询的字符或字符串\n");
scanf("%s",strin);
getchar();
while( !feof(fp) )
{
for( ci=0; strcp[ci] != ' '; ci++ )
if( ( strcp[ci]=fgetc(fp) ) == '\n' )
{
ch++;
strcp[ci]=' ';
break;
}
strcp[ci]='\0';
if( strcomp( strin,strcp ) == 1 )
printf("字符串 %s 出现在第 %d 行\n",strin,ch);
clean( strcp );
}
clean( strin );
}
fclose( fp );
return(1);
}
int strlength( char *s )
{
int i=0;
while( *(s++) != '\0' )
i++;
return( i );
}
int strcomp( char strin[], char strcp[] )
{
int i;
if( strlength( strin ) != strlength( strcp ) )
return( 0 );
else
{
for( i=0; i < strlength( strin ); i++ )
if( strin[i] != strcp[i] )
return( 0 );
return(1);
}
}
void clean( char *s )
{
while( *s != '\0' )
{
*s='\0';
s++;
}
}
搜索更多相关主题的帖子: PRE 编译 include strin 
2006-05-14 13:09
空中鱼
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2006-5-14
收藏
得分:0 
复杂的,不懂
2006-05-14 13:14
gaga
Rank: 1
等 级:新手上路
威 望:2
帖 子:307
专家分:0
注 册:2006-4-5
收藏
得分:0 
程序我没有仔细的看,细看我也看不懂呵呵,文件我都没有学
就发现你的 主函数中的return
好象0是正常返回吧,

[此贴子已经被作者于2006-5-14 13:41:41编辑过]


明天的明天还有明天。 可是今天却只有一个。 public Copy from 无缘今生
2006-05-14 13:41
soft_wind
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:1430
专家分:0
注 册:2006-4-5
收藏
得分:0 

文件我学得不是很深,让版主老大帮您看看,他准会的,呵呵……


对不礼貌的女生收钱......
2006-05-14 14:51
feng1256
Rank: 4
等 级:贵宾
威 望:14
帖 子:2899
专家分:0
注 册:2005-11-24
收藏
得分:0 
要是到晚上还没人看,我保证看

我一会给个高三学生上课去~~~
没时间啦,逛一会要下了

叁蓙大山:工謪、稅務、嗣發 抱歉:不回答女人的问题
2006-05-14 14:53
论坛
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1372
专家分:0
注 册:2006-3-27
收藏
得分:0 
while( !feof(fp) )
{
for( ci=0; strcp[ci] != ' '; ci++ )
if( ( strcp[ci]=fgetc(fp) ) == '\n' )
{
ch++;
strcp[ci]=' ';
break;
}
太乱了,这段应该有问题

日出东方,唯我不败! 做任何东西都是耐得住寂寞,任何一个行业要有十年以上的积累才能成为专家
2006-05-14 14:55
feng1256
Rank: 4
等 级:贵宾
威 望:14
帖 子:2899
专家分:0
注 册:2005-11-24
收藏
得分:0 

按楼主意思改了下,只判断每行是否和输入串相同
[CODE]
#include "stdio.h"
#include "string.h"
#include "conio.h"

FILE *fp;
int Strcomp ( char strin[], char strcp[] );

int main( void )
{
int i, count;
char strin[20], strcp[20],ch;

while(1)
{
if( (fp=fopen("E:\\text.txt","r")) == NULL ) /*多次打开查询*/
{
printf("无法打开该文本文件\n");
exit(-1);
}
printf("0:退出; 1:进入查询;\n");
scanf("%d",&i);
getch();
if( i==0 )
exit(0);
printf("请输入要查询的字符或字符串\n");
gets(strin);
count=0; /*初始化*/
while( (ch=fgetc(fp)) != -1 )
{
for(i=0 ; ch != '\n' && ch != -1 ; i++,ch=fgetc(fp) )
strcp[i]=ch;
count++;
strcp[i]='\0';
if( Strcomp( strin,strcp ) == 1 )
{
printf("字符串 %s 出现在第 %d 行\n\n",strin,count);
break;
}
} /*清空多余*/
}
fclose( fp );
return 0;
}

int Strcomp( char strin[], char strcp[] ) /*大写*/
{
int i;
if( strlen (strin) != strlen( strcp ) )
return( 0 );
else
{
for( i=0; i < strlen( strin ); i++ ) /*strlen库函数直接用*/
if( strin[i] != strcp[i] )
return( 0 );
return(1);
}
}

[/CODE]


叁蓙大山:工謪、稅務、嗣發 抱歉:不回答女人的问题
2006-05-15 01:43
luo113927
Rank: 1
等 级:新手上路
帖 子:173
专家分:0
注 册:2006-3-15
收藏
得分:0 

呵呵,谢了斑竹先

电信宽带实在太烂了,出点问题居然要4天才来修

2006-05-17 19:14
luo113927
Rank: 1
等 级:新手上路
帖 子:173
专家分:0
注 册:2006-3-15
收藏
得分:0 
还是不能正确运行!!!
斑竹还是不行咯,,我又改了改,看不出什么错误,但一运行就错
真的晕了

[CODE]

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
FILE *fp;
int  strcomp  ( char strin[], char strcp[] );
void clean    ( char *s );
int main( void )
{
int k=0, ci, ch=1;
char s='0', strin[20]={"0"}, strcp[20]={"0"};
if( (fp=fopen("E:\\text.txt","r")) == NULL )
{ printf("无法打开该文本文件\n"); return(0); }
  printf("0:退出; 1:进入查询;\n");
  scanf("%d",&k);
  getchar();
  if( 0==k )
   exit(0);
  printf("请输入要查询的字符或字符串\n");
  gets(strin);
  while( !feof(fp) )
  {
   ci=0;
   do
   {
    s=fgetc(fp);
    //printf("%c   ....\n",s);
    if( s=='\n' )
    {
     ch++;
     break;
    }
    else if( s==' ' )
     break;
    else
     strcp[ci++] = s;
   }while( 1 );
      if( strcomp(strin,strcp) == 1 )
       printf("字符串 %s 出现在第 %d 行\n",strin,ch);
  }
fclose( fp );
return(1);
}
int strcomp( char strin[], char strcp[] )
{
int i;
if( strlen( strin ) != strlen( strcp ) )
  return( 0 );
else
{
  for( i=0; i < strlen(strin); i++ )
   if( strin[i] != strcp[i] )
    return( 0 );
     return(1);
}
}

[/CODE]

[此贴子已经被作者于2006-5-19 14:23:52编辑过]

2006-05-19 14:14
haiduc
Rank: 1
等 级:新手上路
帖 子:45
专家分:0
注 册:2005-11-30
收藏
得分:0 
int strcomp( char strin[], char strcp[] )
{
int i;
if( strlen( strin ) != strlen( strcp ) )
return( 0 );
else
{
for( i=0; i < strlen(strin); i++ )
if( strin[i] != strcp[i] )
return( 0 );
return(1);
}
}

这是干么用的,解释一下得好

2006-05-19 14:57
快速回复:编译通过,但运行错误
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017542 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved