描述
•输入一个字符串,请按长度为8拆分每个输入字符串并进行输出;
•长度不是8整数倍的字符串请在后面补数字0,空字符串不处理。
输入描述:
连续输入字符串(每个字符串长度小于等于100)
输出描述:
依次输出所有分割后的长度为8的新字符串
代码一:
#include<stdio.h>
#include<string.h>
int main ( )
{
char a[100];
int L,c,i,j;
gets(a);
L=strlen(a);
if (L==0)
printf("空字符串,不处理");
else
{
for(i=0;i<L;i++)
{
if((i+1)%8==0)
printf("%c\n",a[i]);
else
printf("%c",a[i]);
}
if (L%8!=0)
{
c=8-L%8;
for(j=0;j<c;j++)
{
printf("0");
}
printf("\n");
}
}
return 0;
}
代码二:
//代码最后补充的0总会换行,原因:printf 中没有添加换行符 '\n',输出时也自动换行了。
//所以 fgets() 和 gets() 一样,最后的回车都会从缓冲区中取出来。只不过 gets() 是取出来丢掉,而 fgets() 是取出来自己留着。
//这个成功了,将fgets函数换成gets函数
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main ( )
{
char a[100];
int L,c,i;
//fgets(a,100,stdin);
gets(a);
L=strlen(a);
if (L==0)
printf("空字符串,不处理\n");
else if (L!=0)
{
if (L%8==0)
{
for(i=0;i<L;i++)
{
if((i+1)%8==0)
printf("%c\n",a[i]);
else
printf("%c",a[i]);
}
}
else
{
c=8-L%8;
for(i=0;i<L;i++)
{
if((i+1)%8==0)
printf("%c\n",a[i]);
else
printf("%c",a[i]);
}
for(i=0;i<c;i++)
printf("0");
printf("\n");
}
}
system("pause");
return 0;
}
注意:使用fgets函数时,最后补充的0会另起一行,原因是输入字符时,摁了【enter】键后,回车键被“读入”了,所以在补充的0之前会有个换行符,会导致补充的0会另起一行,而换成gets函数后,换行符就不会被“读入”。
#include<stdlib.h>
........
system("pause");
添加这两句话是因为VS软件显示结果的窗口一闪而过,很快就被关闭了,添加后窗口会被笃定。