| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 914 人关注过本帖
标题:[求助]求各位朋友帮忙看看这个语句
只看楼主 加入收藏
powerlong
Rank: 1
等 级:新手上路
帖 子:41
专家分:0
注 册:2005-10-22
收藏
 问题点数:0 回复次数:12 
[求助]求各位朋友帮忙看看这个语句

请问从文件中读一行 用下面方法为什么不队?我用的是vc++编译器
while(!feof(fp))
{ j=0;
while((ch[j++]=fgetc(fp))!=(EOF||'/0'))
}

搜索更多相关主题的帖子: 语句 朋友 
2005-11-10 19:06
freeforever
Rank: 4
等 级:业余侠客
威 望:3
帖 子:368
专家分:201
注 册:2005-11-2
收藏
得分:0 

乱码呀,看不清....


其实我也很无聊!
2005-11-10 19:17
powerlong
Rank: 1
等 级:新手上路
帖 子:41
专家分:0
注 册:2005-10-22
收藏
得分:0 
楼上什么意思啊?看不见吗?
大家有什么好的建议也可以说一下
2005-11-10 19:27
ghy2001
Rank: 1
等 级:新手上路
威 望:1
帖 子:87
专家分:0
注 册:2005-10-30
收藏
得分:0 
))!=(EOF||'/0'
不能这样写吧。
ch[j++]=fgetc(fp))!=EOF&&ch[j++]=fgetc(fp))!='\0'

2005-11-10 19:48
powerlong
Rank: 1
等 级:新手上路
帖 子:41
专家分:0
注 册:2005-10-22
收藏
得分:0 

这样好象也不行啊?
这是一个关于编译的词法分析的程序。大家都帮忙看看吧 谢谢了
#include<stdio.h>
void main()
{
FILE *fp;
int i,j,k,l,m,t=0,error[100]; //t 为行数;
char a[100][10]; // 存 scan后的字串
char filename[20],ch[100];//failname文件名数组 ch缓冲数组;
f1:
scanf("%s",filename);
if((fp= fopen(filename,"r"))==NULL)//打开文件;
{
printf("can not find this file\n");
goto f1;
}

while(!feof(fp))
{ j=0;
while(((ch[j++]=fgetc(fp))!='\0')||((ch[j++]=fgetc(fp))!=EOF))//读一行
/*ch[0]=fgetc(fp);
while(ch[j]!='/0'){j++;ch[j]=fgetc(fp);}*/
t++;
i=0;k=0;l=0;
while(i<=j) //j是缓冲区最后一个数的下标;
{
if(ch[i]==' ')i++;
else if(ch[i]>='0'&&ch[i]<='9') //判数字
{
a[l][k]=ch[i]; //读第一个字母
while(ch[i+1]>=48&&ch[i+1]<=57)//判断下一个字符
{
k++;i++;
a[l][k]=ch[i];
}
if(ch[i+1]==' ')
{
i++;l++;k=0;
}
else
{error[m++]=t;l++;k=0;i++;}
}
else if(ch[i]>='a'&&ch[i]<='z'||ch[i]>='A'&&ch[i]<='Z')//判字串
{a[l][k]=ch[i];
while(ch[i+1]>='a'&&ch[i+1]<='z'||ch[i+1]>='A'&&ch[i+1]<='Z'||ch[i+1]>='0'&&ch[i+1]<='9')
{
k++;i++;
a[l][k]=ch[i];
}
if(ch[i+1]==' ')
{
i++;l++;k=0;
}
else
{error[m++]=t;l++;k=0;i++;}
}
else if(ch[i]=='<')//判< ,<>, <=
{a[l][k]=ch[i];
if(ch[i+1]=='>'||ch[i+1]=='=')
{
k++;i++;
a[l][k]=ch[i];i++;l++;k=0;
}
else
{i++;l++;k=0;}
}
else if(ch[i]=='>')//
{a[l][k]=ch[i];
if(ch[i+1]=='=')
{
k++;i++;
a[l][k]=ch[i];i++;l++;k=0;
}
else
{i++;l++;k=0;}
}
else if(ch[i]==':')//:=
{a[l][k]=ch[i];
if(ch[i+1]=='=')
{
k++;i++;
a[l][k]=ch[i];i++;l++;k=0;
}
else
{error[m++]=t;i++;k=0;}// no l++ because need cover;
}
else if(ch[i]=='+')//
{a[l][k]=ch[i];
i++;l++;k=0;
}
else if(ch[i]=='-')//
{a[l][k]=ch[i];
i++;l++;k=0;
}
else if(ch[i]=='*')//
{a[l][k]=ch[i];
i++;l++;k=0;
}
else if(ch[i]=='/')//
{a[l][k]=ch[i];
i++;l++;k=0;
}
else if(ch[i]=='=')//
{a[l][k]=ch[i];
i++;l++;k=0;
}
else if(ch[i]=='(')//
{a[l][k]=ch[i];
i++;l++;k=0;
}
else if(ch[i]==')')//
{a[l][k]=ch[i];
i++;l++;k=0;
}
else if(ch[i]==',')//
{a[l][k]=ch[i];
i++;l++;k=0;
}
else if(ch[i]==';')//
{a[l][k]=ch[i];
i++;l++;k=0;
}
else if(ch[i]=='.')//
{a[l][k]=ch[i];
i++;l++;k=0;
}
else if(ch[i]=='\0')//
{a[l][k]=ch[i];
i++;l++;k=0;
}
else
error[m++]=t;i++;
for(i=0;i<=l;i++)
puts(a[i]);
printf("\n");


}


}
}

2005-11-10 19:59
freeforever
Rank: 4
等 级:业余侠客
威 望:3
帖 子:368
专家分:201
注 册:2005-11-2
收藏
得分:0 
以下是引用powerlong在2005-11-10 19:27:33的发言:
楼上什么意思啊?看不见吗?
大家有什么好的建议也可以说一下

请客气些,你是在求人,不是在用人. 论坛出乱码是常事,我刷了好几次都看不到你写的是什么...
下面是用C写的,你改改就是C++的了!!
#include <stdio.h>
main()
{
char a[80],filename[20];
int i;
FILE *fp;
printf("\nInput filename:");
scanf("%s",filename);
if((fp=fopen(filename,"r"))==NULL)
{printf("\nOpen file error!");exit(-1);}
for(i=0;fgetc(fp)!='\n';++i);
rewind(fp);
fgets(a,i,fp);
fclose(fp);
puts(a);
}


其实我也很无聊!
2005-11-10 20:00
powerlong
Rank: 1
等 级:新手上路
帖 子:41
专家分:0
注 册:2005-10-22
收藏
得分:0 
你误会了 我只是在问你,没有别的意思。真的很抱歉
2005-11-10 20:15
powerlong
Rank: 1
等 级:新手上路
帖 子:41
专家分:0
注 册:2005-10-22
收藏
得分:0 
可是我需要把数存在2维数组里面啊
2005-11-10 20:24
powerlong
Rank: 1
等 级:新手上路
帖 子:41
专家分:0
注 册:2005-10-22
收藏
得分:0 

上面说错了 是一维的 不好意思!!

2005-11-10 20:26
powerlong
Rank: 1
等 级:新手上路
帖 子:41
专家分:0
注 册:2005-10-22
收藏
得分:0 

请告诉我怎么读一行数字到一个数组里面

2005-11-10 20:32
快速回复:[求助]求各位朋友帮忙看看这个语句
数据加载中...
 
   



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

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