在C中使用空格进行字符串输入(4种不同的方法)

我们可以使用 scanf(“%s”,str) .但是,在找到第一个空格之前,它只接受字符串。 有 4种方法 C程序以用户输入的形式接受带有空格的字符串。 让我们有一个名为 str[] .所以,我们将一个变量声明为 char str[20] .

null

方法1: 使用 得到 语法: char*get(char*str)

C

#include <stdio.h>
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是最大限制。

C

#include <stdio.h>
#define MAX_LIMIT 20
int main()
{
char str[MAX_LIMIT];
fgets (str, MAX_LIMIT, stdin);
printf ( "%s" , str);
return 0;
}


方法3: 使用 %[^]%*c 内部扫描 例子: scanf(“%”[^]%*c“,str);

C

#include <stdio.h>
int main()
{
char str[20];
scanf ( "%[^]%*c" , str);
printf ( "%s" , str);
return 0;
}


说明: 在这里 [] 是吗 扫描集 性格 ^ 指示在遇到换行符之前获取输入。然后,用这个 %*c ,它读换行符,在这里使用 * 指示放弃此换行符。 本文由 阿迪蒂亚·库马尔 .如果你喜欢GeekSforgek,并想贡献自己的力量,你也可以使用 写极客。组织 或者把你的文章寄去评论-team@geeksforgeeks.org.看到你的文章出现在Geeksforgeks主页上,并帮助其他极客。 如果您发现任何不正确的地方,或者您想分享有关上述主题的更多信息,请写下评论。

方法4: 使用%[^]它在scanf里面。

例子: scanf(“%”[^]s“,str);

C

#include <stdio.h>
int main() {
char str[100];
scanf ( "%[^]s" ,str);
printf ( "%s" ,str);
return 0;
}


说明: 这里,[]是扫描集字符^指示在遇到换行符之前获取输入。在这里,我们使用了^(异或-运算符),它将为true,直到两个字符都不同。一旦字符等于新行(’“),^(异或运算符)给出false来读取字符串。所以我们使用“%”[^]而不是“%s”。因此,要获得一行带有空格的输入,我们可以使用scanf(“%”[^]s“,str);

本文由 穆克什·帕特尔。 如果你喜欢Geeksforgek,并且想贡献自己的力量,你也可以使用 写极客。组织 或者把你的文章寄去评论-team@geeksforgeeks.org.看到你的文章出现在Geeksforgeks主页上,并帮助其他极客。如果您发现任何不正确的地方,或者您想分享有关上述主题的更多信息,请写下评论。

© 版权声明
THE END
喜欢就支持一下吧
点赞6 分享