zl程序教程

您现在的位置是:首页 >  其他

当前栏目

练习 1-22 编写一个程序,把较长的输入行“折”成短一些的两行或多行,折行的位置在输入行的第n列之前的最后一个非空格之后。

输入程序 一个 一些 编写 练习 位置 之后
2023-09-14 09:06:57 时间

C语言程序设计(第二版) 练习1-22 个人设计

练习 1-22 编写一个程序,把较长的输入行“折”成短一些的两行或多行,折行的位置在输入行的第n列之前的最后一个非空格之后。要保证程序能够智能地处理输入行很长以及在制定的列前没有空格或制表符时的情况。

代码块:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void fold(char s[]);                        //定义折行函数
int main()
{
	char string[100];                       //定义一个足够大的数组
	printf("Please enter string: ");        //输入字符串
	gets(string);
	fold(string);                           //调用折行函数
	puts(string);                           //输出折行后的字符串
	system("pause");
	return 0;
}
/*折行函数*/
void fold(char s[])
{
	int i, j, len, word_count;              //定义变量,长度,字符计数
	len=strlen(s);                          //判断字符串长度,并在末尾添加终止符
	s[len]='\0';
	for (i=0, word_count=0; s[i]!='\0'; i++){
		word_count++;
		if (word_count==20){                //当字符计数满足20个条件时
			if (s[i]==' '||s[i]=='\t'){     //此三行代码表示当前字符为空格或制表符时,替换为换行符
				s[i]='\n';
				word_count=0;
			}
/*以下条件内的代码:当前字符不满足为空格或制表符时,向后查找直到发现空格或制表符,然后替换为换行符,
同时如果向后查找的过程中如果遇到终止符,直接跳出循环,否则执行替换为换行符。*/
			else{
				for (j=i; s[j]!=' '&&s[j]!='\t'&&s[j]!='\0'; j++);
				if (s[j]!='\0'){
					s[j]='\n';
					i=j;
					word_count=0;
				}
				else
					break;
			}
		}
	}
}