📄 getline.cpp
字号:
#include<iostream.h>
#include<fstream.h>
#include<malloc.h>
char n;
char * tem;
int flag=0;
int k=0;
void getaline(ifstream &ins,int pw,int lm,char * buffer)
{ for(int m=0;m<pw;m++) buffer[m]='\0';
int length=0;
int i=0;
if(n=='@') //分段
{ for(;i<8;i++)
buffer[i]='\0';
buffer[i+1]='@';
}
for(;i<lm;i++) //左空白
buffer[i]='\0';
if(flag) //如果完整的字被分在两行,则将被分割的字挪到下一排输出
{
for(int p=0;p<k;p++)
{ buffer[i]=tem[k-1];i++;k--;}
k=0;
flag=0;
}
if(n==' ') //如果下一行开头为空格,则忽略空格
{ while(n==' ')
{ n=(char)ins.get();
}
buffer[i++]=n;
}
else buffer[i++]=n;
for(;i<pw;i++)
{
char a=(char)ins.get();
if(a=='/n')
ins.get();
if(a=='@') //若遇到分段标记则停止本行输出
{ n=a;
cout<<"haoa ni";
goto end;
}
if(a==' ') //字与字之间只留一个空格符
{ buffer[i++]='\0';
while(a==' ')
{
a=(char)ins.get();
}
if(a=='/n') //忽略换行符
a=(char)ins.get();
}
buffer[i]=a;
if(ins.eof())
return ;
}
n=(char)ins.get();
if( n!=' ' && buffer[pw-1]!=' ' )
{ while(buffer[i-1]!='\0')
{ tem[k]= buffer[i-1];
buffer[i-1]='\0';
i--;k++;
flag=1;
}
}
end : return;
}
void main()
{ char * buffer;
buffer=(char*)malloc(10*sizeof(char));tem=(char*)malloc(10*sizeof(char));
ifstream myinf("aaa.txt");ofstream out("abcd.txt");
if(myinf.fail())
{ cerr<<"文件打开出错!";
return;
}
n=(char)myinf.get();
getaline(myinf,500,3,buffer);
for(int i=0;i<500;i++)
{
cout<<buffer[i];
out<<buffer[i];
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -