我们可以使用的scanf(“%s”时,STR)取字符串输入的温度。但是,它仅在找到第一个空格之前才接受字符串。
C程序通过3种方法以用户输入的形式接受带空格的字符串。
让我们有一个名为str []的字符数组(字符串)。因此,我们已将变量声明为char str [20]。
方法1:使用获取
语法: char * gets(char * str)
#include
int main()
{
char str[20];
gets(str);
printf("%s", str);
return 0;
}
注意:gets()已从c11中删除。因此,在实施时可能会向您发出警告。
我们在这里看到它并不在乎数组的大小。因此,缓冲区溢出是有可能的。
方法2:为了克服上述限制,我们可以将fgets用作:
语法: char * fgets(char * str,int size,FILE * stream)
示例: fgets(str,20,stdin);如此处所示,根据声明,20为MAX_LIMIT。
#include
#define MAX_LIMIT 20
int main()
{
char str[MAX_LIMIT];
fgets(str, MAX_LIMIT, stdin);
printf("%s", str);
return 0;
}
方法3:在scanf中使用%[^ \ n]%* c
示例: scanf(“%[^ \ n]%* c”,str);
#include
int main()
{
char str[20];
scanf("%[^\n]%*c", str);
printf("%s", str);
return 0;
}
说明: []是scanset字符。 ^ \ n告知输入,直到没有遇到换行符为止。然后,此%* C,它读取字符和这里使用*指出这个字符被丢弃。
想要从精选的最佳视频中学习和练习问题,请查看《基础知识到高级C的C基础课程》。