例子:char str1[20]={‘\0’},str2[10]={‘\0’};
gets与scanf输入方式区别
如下:
(1) gets的输入分割符只有回车,因此gets是能够读入空格的。
gets
#include<stdio.h>
#include<string.h>
int main()
{
char str1[20]={'\0'};
printf("请输入字符串:\n");
gets(str1);
printf("输出字符串:\n");
printf("%s",str1);
return 0;
}
scanf:
#include<stdio.h>
#include<string.h>
int main()
{
char str1[20]={'\0'};
printf("请输入字符串:\n");
scanf("%s",str1);
printf("输出字符串:\n");
printf("%s",str1);
return 0;
}
(2)scanf和gets对待缓冲区里的回车符也不同。
scanf在读取非空白符之前会忽略回车,读取之后如果遇到空白字符会停止输入,将其留着缓冲区里。
gets一遇到回车就结束,并把这个回车从缓冲区里移走。
(3) gets可以读取空回车,但是scanf不能。
C语言连接两个字符串
#include<stdio.h>
#include<string.h>
int main()
{
char str1[20]={'\0'},str2[10]={'\0'};
int len;
printf("请输入两个字符串:\n");
scanf("%s%s",str1,str2);
len=strlen(str1);
for(int i=0;*(str2 + i) != '\0';i++)
{
*(str1 + len + i) = *(str2 + i);
}
printf("%s",str1);
return 0;
}
若有错误,还望各位大佬批评指正~~~