定义三种状态:
初始状态(s1)、已读入引号准备读内容状态(s2)、正在读内容并注意是不是引号状态(s3)、读入引号准备读逗号状态(s4)、已读入逗号准备读引号状态(s5)
这样就有
s1 -> s2 -> s3 -> s4 -> s5 -> s2 -> s3 -> s4 -> s5 -> s2 -> ……(循环
定义一个变量s代表当前状态,然后每次读一个字符,根据s的不同做不同的事,该改变状态的时候改变状态,一直循环到所有字符全部读完
除了s3状态,其他时候忽略掉空格等字符
#include
#include
void main()
{
FILE * fp;
if(!(fp=fopen("word.txt","rt")))
{
printf("open file error\n");
exit(0);
}
char c;
fgetc(fp);
c = fgetc(fp);
int index=0;
while(!feof(fp))
{
if (c == '\"')
{
index ++;
if(index == 2)
{
index = 0;
putchar('\n');
}
c = fgetc(fp);
continue;
}
if (c!=',')
{
putchar(c);
c = fgetc(fp);
continue;
}
c=fgetc(fp);
}
putchar('\n');
fclose(fp);
}
说明:单词存在word.txt文件里边,单词引号和逗号都使用英文的。
fstream fs(...);
char b=0;
while(b=fs.get()!=EOF){
if(b=='"'||b==',') //如果读到 引号或者逗号
{
fs.seekg(1,ios::cur); //读指针向后移一位
cout<<' '; //空一格
}
else cout<}
cout<