用 VC++写段读字符程序,就是从一个存在的文档中读出其内容,
比如:文档a.txt
内容 void main()
{
printf("i'm a student.");
return;
}
写个程序 这段文字读出来..........
怎么写哇?初学C++ ,不会写,高手帮忙.
用 VC++写段读字符程序,就是从一个存在的文档中读出其内容,
比如:文档a.txt
内容 void main()
{
printf("i'm a student.");
return;
}
写个程序 这段文字读出来..........
怎么写哇?初学C++ ,不会写,高手帮忙.
FILE *fp=fopen("a.txt","r");
CString cs;
fscanf(fp,"%s",cs);
fclose(fp);
我也新手,请批评指正!:)
#include <iostream>
#include <string>
#include <fstream>
using namespace std;
int main()
{
ifstream fin("a.txt");
string str;
getline(fin,str,'\0');
cout<<str;
return 0;
}
这是我写的一段词法分析的程序,不知道那个读文件的那段程序加在哪。。
知道的可以帮我看一下吗。。谢谢了
我是编程初学者,有好多不明白的地方,还请大家多指点了
#include <stdio.h>
#define M 13
#define N 10
#define end -1
char a[N],c[100];
char WORD[M][N]={"and","if","else","int","while","struct","define","include","void","main","printf"};
int i;
void main()
{
void id();
void num();
char ch,a[10],c[100];
ch=getchar();
do
{
if (ch==' ')
ch=getchar();
else if(ch=='\n')
ch=getchar();
else if((ch>='a'&&ch<='z')||(ch>='A'&&ch<='Z'))
id(ch);
else if(ch>='0'&&ch<='9') //纠正错误 把原来的 a 该成 ch
num(ch);
}while(ch!=end)
}
void id(char b)
{
int k=0;
do{
if(k<10)
{
k=k+1;
a[k]=b;
}
else
{
printf("标识符太长!");
}
b=getchar();
}while((b>='a'&&b<='z')||(b>='A'&&b<='Z'));
for(i=0;i<N;i++)
{
if(WORD[i]==a)
break;
}
if(i<N)
{
for(k=1;k<=10;k++)
{
printf("%C",a[k]);
}
printf("--------关键字\n");
}
else
{
for(k=1;k<=10;k++)
{
printf("%C",a[k]);
}
printf("-------用户自定义标识符\n");
}
}
void num(char b)
{
if(b>='0'&&b<='9')
{
int i=0;
do{
if(i<100)
{
c[i]=b;
i=i+1;
b=getchar();
}
else
printf("--数字太长!\n");
}while(b>='0'&&b<='9');
}
}
[此贴子已经被作者于2006-12-26 18:12:58编辑过]
回5楼,我看了你的程序,小错误不少,比如if(a>='0'&&a<='9') a is a char-array,
又比如你a与c你都在mian()内外分别都有定义,重复定义了
还有就是你的id和num函数在声明的时候是void id()和void num()应该是void id(char),void num(char)吧
还有你id函数中a用来保存临时的单词,如果是这样的一个字符串: abcd ef
显然第一次进入id函数时a[]=abcd,第二次进入a的0,1位置的字符将改变,即a[] = efcd,这是你想要得到的结果吗 ?
不知道你懂不懂C++,我用c++临时给你写了个,时间仓促可能有错,你自己看看吧。。
//////////////////////////////////////////////////////////////////////////////////
#include <iostream>
#include <string>
#include <fstream>
using namespace std;
#define M 11
#define N 10
int main()
{
char FileName[12];
string WordInFile;
char WORD[M][N]={"and","if","else","int","while","struct",
"define","include","void","main","printf"};
cout<<"input your file name please: ";
cin>>FileName;
ifstream fin(FileName);
while ( fin>>WordInFile )
{
cout<<WordInFile<<" -------- ";
if ( WordInFile.length() > N ) cout<<"The word is too long!"<<endl;
else
{
for ( int i = 0 ; i < M ; ++i )
if ( WORD[i] == WordInFile )
{
cout<<"key word!"<<endl;
break;
}
if ( i >= M ) cout<<"user-defined!"<<endl;
}
}
fin.close();
return 0;
}
回6楼:其基本原理是一样的,但是在MFC中不光可以用fscanf(fprintf)和fstream外,
还可以用CFile类,并且可以用CArchive实行序列化
回7楼的~`
好象有个很严重的错误哦~~运行以后 在DOS界面下出现
input your file name please: dd //dd是文件名
输入文件名后出现 :please click any key to contniue
再键入回车 就直接退出 并不往下执行
那时因为你dd文件中根本就没有内容或者这个文件不存在
[此贴子已经被作者于2006-12-26 19:34:21编辑过]