众所周知scanf()函数输入字符串时遇到空格或者回车就会停止录入字符
即使用
char arr[1000];
scanf("%s", arr);
printf("%s\n", arr);
这种方法不可能输出一组带空格的字符串
这时我考虑使用getchar()函数
getchar()函数无论遇到回车时停止录入(可以录入空格)
但getchar()只能返回输入字符串的第一个字符,所以需要循环才能组成字符串
下面请看代码:
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <string.h>
int main(){
char a[1000]; //首先定义一个足够大的数组
char ch;
int i = 0;
while ((ch = getchar()) != EOF){ //使用循环意思为当 ch!=EOF(ctrl+z)时进行循环否则跳出
if (ch == '\n'){ //判断是否为回车若是则将结束符赋给第i-1个元素
a[i] = '\0'; //'\0'结束符当printf()输出为'\0'前的所有字符
break;
}
a[i] = ch;//不是回车则赋值给字符串元素
++i;
}
printf("%s\n", a);
printf("%d\n", strlen(a));
return 0;
}
完成目标
还有一种超级简单的方法:
(一)
char str[50];
scanf("%[^\n]", str);
printf("%s\n", str);
直接可以实现目标
(二)
char str[100];
gets(str);
printf("%s\n", str);