题目描述:
连续输入字符串(输出次数为N,字符串长度小于100),请按长度为8拆分每个字符串后输出到新的字符串数组,
长度不是8整数倍的字符串请在后面补数字0,空字符串不处理。首先输入一个整数,为要输入的字符串个数。
例如:
输入:
2
abc
12345789
输出:
abc00000
12345678
90000000
一、.代码
#include<stdio.h> //标准输入输出函数
#include<string.h> //字符头文件
int main()
{
int i,n;
char m,ch[1000000];
while( scanf("%d\n",&n)!=EOF ) //输入要输入字符串的个数n
{
for(int j=0;j<n;j++)
{
gets(ch); //输入字符串
strcat(ch,"0000000"); //strcat字符串连接函数
for( int i=0;strlen(&ch[i])>=8;i+=8)
printf("%.8s\n",&ch[i]);
}
}
return 0;
}
二、结果
2
abc
123456789
abc00000
12345678
90000000
三、关于代码理解
1.EOF:
即end of file,在while循环中以EOF作为文件结束标志。Linux系统中,在新的一行的开头,按下Ctrl-D,就代表EOF。Windows中,在新的一行的开头,按下Ctrl-Z,就表示EOF。
2.gets函数:
仅用于读入字符串,并将读入的字符串存入ch所指向的字符数组中,以回车结束读取,返回值为char*型,当读入成功时会返回输入的字符串指针地址,出错时返回NULL。
3.代码思路
直接将输入的字符串用strcat函数在其后串上7个0,然后进入for循环,初始时i=0,使用strlen函数判断以ch[0]开头的字符串字符个数是否大于等于8?满足,则输出以ch[0]开头的8位字符串,而后i=0+8=8,同样判断以ch[8]开头的字符串字符个数是否大于或等于8,若满足则输出以ch[8]开头的8位字符串,否则跳出循环。