c - gets() 和 scanf() 有什么区别

标签 c string scanf gets letters

#include <stdio.h>

int main()
{
   char text[100];
   int length = 0;

   gets(text);

   while (text[length] != '\0')
      length++;

   printf("%d",length);
}

我试图使用上面的程序来计算字符串中的字母。有效。但是,当我尝试使用 scanf() 相同的程序时而不是gets() ,没有成功。

最佳答案

gets(buf)scanf("%[^\n]", buf) 是等效的,并且不得使用,因为他们将读取超出 buf 末尾的输入。

使用fgets(buf, sizeof buf, stdin)并调整您的代码,因为fgets'\n'存储在buf 的末尾(如果存在于输入流中)。

关于c - gets() 和 scanf() 有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28774091/

相关文章:

c - 将硬 float 链接到 softfp 不良性能

c - 期望-c程序

c - 指向字符串数组的指针数组

python - 在 python 中提取表单键值对表单 html 页面或解析 html 页面

java - 读取文件时如何跳过某些文本区域?

c++ - scanf() 的宽度说明符 - 要使用的字符长度在编译时不固定,仅在运行时确定。如何使其可变?

c - 将libavcodec编码的视频保存为AVI文件格式

java - 为什么守护进程最经常用C编写?

C 程序 - 验证从文本文件中读取的数字

c - 了解 "while (getchar() != '\n')"