练习内容如下:
编写一个程序,在输入的第n列之前的非末尾空白字符后,将长输入行“折叠”为两个或更多较短的行。确保你的程序对非常长的行做出智能处理,并且如果在指定的列之前没有空格或制表符,则也要进行处理。
我的问题是如何实现
你能给我一些提示吗?但请不要写出解决方案,我想自己想出来。
我已经编写了一些代码,但是在折叠部分卡住了。
编写一个程序,在输入的第n列之前的非末尾空白字符后,将长输入行“折叠”为两个或更多较短的行。确保你的程序对非常长的行做出智能处理,并且如果在指定的列之前没有空格或制表符,则也要进行处理。
我的问题是如何实现
foldStrings
函数。我尝试了一些方法,但都不起作用。你能给我一些提示吗?但请不要写出解决方案,我想自己想出来。
我已经编写了一些代码,但是在折叠部分卡住了。
#include <stdio.h>
#include <string.h>
int getline(char s[], int lim);
void emptystring(char s[]);
void foldStrings(char s[],int len);
int main(){
int len ;
char line[255];
while((len = getline(line,255))>0)
{
foldStrings(line,len);
}
return 0;
}
int getline(char s[],int lim)
{
int c , i ;
for( i = 0 ; i < lim-1 && ( c = getchar()) != EOF && c !='\n';++i)
s[i] = c;
if ( c == '\n')
{
s[i] = c;
++i;
}
return i;
}
void foldStrings(char s[], int len)
{
}
void emptystring(char s[])
{
int i;
int len = strlen(s);
for( i = 0 ; i < len ; ++i){
s[i] = 0 ;
}
}
我卡在了foldStrings
函数上。
P.S. 我正在使用空字符串函数来打印行,所以先打印一条分段线,然后清空它,再次填充并打印它,如此往复。
更新
我尝试做foldStrings
,这是我的其中一个实现
void foldStrings(char s[], int len)
{
int i ;
char temp[255];
for(i = 1;i < len-1 ;++i)
{
if( i % 16 != 0)
{
temp[i-1] = s[i-1];
}
else if(i%16 == 0)
{
printf("%s",temp)
emptystring(temp);
}
}
}