c语言gets函数覆盖 c语言中的gets函数的作用

c语言 gets()会不会把原数组的值全部覆盖掉?比如原数组中有1234四个字符,通过gets输入abc,最终

gets得到的是字符串,而字符串是以'\0'结尾的啦。

公司主营业务:成都网站设计、做网站、成都外贸网站建设公司、移动网站开发等业务。帮助企业客户真正实现互联网宣传,提高企业的竞争能力。创新互联建站是一支青春激扬、勤奋敬业、活力青春激扬、勤奋敬业、活力澎湃、和谐高效的团队。公司秉承以“开放、自由、严谨、自律”为核心的企业文化,感谢他们对我们的高要求,感谢他们从不同领域给我们带来的挑战,让我们激情的团队有机会用头脑与智慧不断的给客户带来惊喜。创新互联建站推出岳西免费做网站回馈大家。

如:

char a[10];

gets(a);//你输入1234,则a里存储的内容是"1234\0",一共占了5个位置,不要忘了'\0'

gets(a);//这里你输入abc,则a存储的内容是"abc\0\0",看到没有两个\0了,而输出字符串,是遇到\0

//就结束的啦。如果你输入ab,则a存储的内容是"ab\04\0",你可以试着输出a[3],那么它会输出4,

//不信?你可以试一试啦

c语言,gets函数的详细用法?

c语言,gets()函数用来从标准输入设备(键盘)读取字符串直到换行符结束,但换行符会被丢弃,然后在末尾添加'\0'字符。其调用格式为:gets(s)。其中s为字符串变量(字符串数组名或字符串指针)。如果为单个字符指针,编译连接不会有错误,但运行后内存溢出错误。

扩展资料:

gets(s)函数与scanf("%s",s)相似,但不完全相同,使用scanf("%s",s) 函数输入字符串时存在一个问题,就是如果输入了空格会认为字符串结束,空格后的字符将作为下一个输入项处理,但gets()函数将接收输入的整个字符串直到遇到换行为止。

gets(s)函数可以无限读取,不会判断上限,以回车结束读取,所以程序员应该确保buffer的空间足够大,以便在执行读操作时不发生溢出。

在c语言中怎样使用gets()函数!

gets从标准输入设备读字符串函数,可以无限读取,不会判断上限,以回车结束读取,所以程序员应该确保buffer的空间足够大,以便在执行读操作时不发生溢出。

1、从stdin流中读取字符串,直至接受到换行符或EOF时停止,并将读取的结果存放在buffer指针所指向的字符数组中。换行符不作为读取串的内容,读取的换行符被转换为‘\0’空字符,并由此来结束字符串。

2、读入成功,返回与参数buffer相同的指针;读入过程中遇到EOF(End-of-File)或发生错误,返回NULL指针。所以在遇到返回值为NULL的情况,要用ferror或feof函数检查是发生错误还是遇到EOF。

3、本函数可以无限读取,不会判断上限,所以程序员应该确保buffer的空间足够大,以便在执行读操作时不发生溢出。如果溢出,多出来的字符将被写入到堆栈中,这就覆盖了堆栈原先的内容,破坏一个或多个不相关变量的值。这个事实导致gets函数只适用于玩具程序,为了避免这种情况,我们可以用fgets(stdin) (fgets实际上可以读取标准输入(即大多数情况下的键盘输入),具体参阅fgets词条)来替换gets()。在V7的手册(1979年)中说明:为了向后兼容,gets删除换行符,gets并不将换行符存入缓冲区。

4、gets()函数用来从标准输入设备(键盘)读取字符串直到换行符结束,但换行符会被丢弃,然后在末尾添加'\0'字符。其调用格式为:gets(s);其中s为字符串变量(字符串数组名或字符串指针)。

用gets函数输入字符串后,会不会覆盖原有的字符串

会覆盖掉原有的字符串的,直接上运行截图,程序还是用的楼上的程序,但要表达的是,不论输入的字符长短,都会全部覆盖

#includestdio.h

#includestring.h

int main(){

char s[10000]="abcdefg"; //原有字符串内容

int i;

printf("old string was: %s\n",s);

printf("input 1234\n"); // 按提示输入1234

gets(s);

printf("The new string is: %s\n",s); // 新字符串是1234

printf("contents in s:\n");

for (i=0;i=strlen(s);i++) putchar(s[i]); // 这里输出覆盖后的 s 里的 内容

return 0;

}

C语言gets函数会覆盖原内容吗

gets()函数会读入字符串数据,并在后面加'\0'。gets(b)执行之后b[]里面就是:" is red.\0s blue.\0"

众所周知,'\0'是字符串结束标志,printf 的时候到'\0'就结束字符串输出了,所以输出的就是" is red."而不是所有的内容。

如果你加上b[8] = '-';

结果就是:

Fig flower is red.

Fig flower is red.-s blue.

说明内容只是覆盖了前面的一部分,懂?

c语言gets函数

gets()函数用于从缓冲区中读取字符串,其原型如下:

char *gets(char *string);

gets()函数从流中读取字符串,直到出现换行符或读到文件尾为止,最后加上NULL作为字符串结束。所读取的字符串暂存在给定的参数string中。

【返回值】若成功则返回string的指针,否则返回NULL。

注意:由于gets()不检查字符串string的大小,必须遇到换行符或文件结尾才会结束输入,因此容易造成缓存溢出的安全性问题,导致程序崩溃,可以使用fgets()代替。

扩展资料:

功能

从stdio流中读取字符串,直至接受到换行符或EOF时停止,并将读取的结果存放在buffer指针所指向的字符数组中。换行符不作为读取串的内容,读取的换行符被转换为‘\0’空字符,并由此来结束字符串。

返回值

读入成功,返回与参数buffer相同的指针;读入过程中遇到EOF(End-of-File)或发生错误,返回NULL指针。所以在遇到返回值为NULL的情况,要用ferror或feof函数检查是发生错误还是遇到EOF。

注意

本函数可以无限读取,不会判断上限,所以程序员应该确保buffer的空间足够大,以便在执行读操作时不发生溢出。如果溢出,多出来的字符将被写入到堆栈中,这就覆盖了堆栈原先的内容,破坏一个或多个不相关变量的值。

这个事实导致gets函数只适用于玩具程序,为了避免这种情况,我们可以用fgets(stdin) (fgets实际上可以读取标准输入(即大多数情况下的键盘输入),具体参阅fgets词条)来替换gets()。在V7的手册(1979年)中说明:为了向后兼容,gets删除换行符,gets并不将换行符存入缓冲区。

参考资料:百度百科-gets


新闻标题:c语言gets函数覆盖 c语言中的gets函数的作用
文章链接:http://hbruida.cn/article/hjodss.html