C 语言标准输入 *** 作中 ,gets() 函数一次只可读取一个字符。这句话对不对呢为什么

C 语言标准输入 *** 作中 ,gets() 函数一次只可读取一个字符。这句话对不对呢为什么,第1张

不对。gets() 函数可以读取一整行字符,而不是一个字符。gets() 函数的作用是从标准输入流 stdin 中读取一行字符,并将其储存在指定的字符串数组中。

例如下面的代码:

```

char str[100];

gets(str);

```

这会将输入的一整行字符读取到 str 数组中。因此,gets() 函数可以读取多个字符,而不是仅限于一个字符。需要注意的是,由于 gets() 函数没有提供输入长度上限检查,因此容易引发缓冲区溢出等安全问题,因此最好使用更安全的函数,例如 fgets() 函数。

getline默认'\n'为一次输入的结束,你在输入5

回车后其实输入流已经有了一个字符串,空字符串,所以第一个字符串长度总是为0,可以在字符串数目后面加字符看结果,如下图:

fgets (buf, sizeof(buf), stdin); 是从标准输入设备读入一行字符串,包括空白空格直到新行键,含新行键。字符串存放到 buf 里。

sscanf (buf, "%i", &option); 是从字符串buf的开始处,按整型读入一个数。

----------------------------------

可以用 scanf,直接读入 一个整型数:

scanf("%i",&option);

但仍要清理掉一行中剩余的东西:

fflush(stdin);

否则,下面一个输入会错。

如果 这行里剩余的东西要派别的用,就不能简单地用fflush(stdin);清除。

-----------------------

一般用fgets (buf, sizeof(buf), stdin); 读一行内容存放起来,是为了输入一次,而多次应用。

#include <stdioh>void main()

{

char t[100],p;

int i,n,m=0;

printf("输入n:");

scanf("%d",&n);

fflush(stdin);

for(i=0;i<n;i++)

{

printf("输入一个字符串:");

gets(t);

p=t;

m=0;

while(p)p++,m++;

printf("长度:%d,最后一个字符:%c\n",m,--p);

}

}

我感觉你的代码没有问题,不过我建议你这样写:

int main(){

    int len;

    freopen("datain","r",stdin);

    freopen("dataout","w",stdout);

    len = fread(s,1,20000000,stdin);  //获取读入数据的长度

    fwrite(s,1,len,stdout);  //按照读入的长度进行输出

    fclose(stdin); fclose(stdout);

    return 0;

}

以上就是关于C 语言标准输入 *** 作中 ,gets() 函数一次只可读取一个字符。这句话对不对呢为什么全部的内容,包括:C 语言标准输入 *** 作中 ,gets() 函数一次只可读取一个字符。这句话对不对呢为什么、在C++计算字符串的长度,代码如下:为什么第一个字符串的长度为0、fgets (buf, sizeof(buf), stdin);等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/10100930.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存