题目描述
字符串的输入输出处理。
输入格式
第一行是一个正整数N,最大为100。之后是多行字符串(行数大于N), 每一行字符串可能含有空格,字符数不超过1000。
输出格式
先将输入中的前N行字符串(可能含有空格)原样输出,再将余下的字符串(不含有空格)以空格或回车分割依次按行输出。每行输出之间输出一个空行。
参考代码:
#include<stdio.h>
#define max 1000
int main()
{
int n;
scanf("%d",&n);
getchar();
char a[max];//字符串只能用数组或开辟空间的指针存
char b[max];
for(int i=0;i<n;i++)//循环输出前N行
{
gets(a);
puts(a);
printf("\n");
}
while(scanf("%s",&b)!=EOF)//scanf()遇到空字符会停止读取,方便分开同一行的字符串
{
printf("%s\n",b);
printf("\n");
}
return 0;
}
拓展:
#include<stdio.h>
int main()
{
char a1='M',a2='m';
printf("%c\n",(a1,a2));//取括号最后一个表达式的值
return 0;
}
这种大胆的想法我还没写过
m
关于strlen是否将 ‘\0’(空字符)计算在内:
#include<stdio.h>
#include<string.h>
int main()
{
printf("%d\n",strlen("ATS\n012\1"));// \1是一个转义字符
return 0;
}
结果:
8
证明strlen() 并未将’ \0‘ 计算在内
可以用printf获取输出字符总个数:
#include<stdio.h>
int main()
{
int k=0;
k=printf("OK\n");//这种写法没见过
printf("%d",k);//k获取到了输出字符总个数
return 0;
}
结果:
OK
3