不对。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);等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)