c语言中不用scanf要用什么来代替(大一初学者,求浅解)?

如上
普通的编程题,如计算什么啊

c语言中不用scanf可以用scanf_s来代替。

scanf函数在读取时不检查边界,所以可能会造成内存访问越界。scanf_s函数带“_s”后缀是为了让原版函数更安全,传入一个和参数有关的大小值,避免引用到不存在的元素。格式为“scanf_s(格式符,变量...变量,缓冲长度)”返回成功读入的数据项数,读取单个字符也需要限定长度。

扩展资料:

scanf_s函数被声明在头文件stdio.h里,因此在使用scanf函数时要加上#include <stdio.h>。变量的地址是在编译阶段分配的(存储顺序由编译器决定)。

如果scanf_s函数中格式符是连着写的如“%d%d%d”,在输入数据时,数据之间不可以用逗号分隔,只能用空白字符(空格或tab键或者回车键)分隔——“2 (空格)3(tab) 4” 或 “2(tab)3(回车)4”等。若是“%d,%d,%d”,则在输入数据时需要加“,”,如“2,3,4”。

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-09-05
gets( )
scanf( )函数和gets( )函数都可用于输入字符串,但在功能上有区别。若想从键盘上输入字符串"hi hello",则应该使用__gets__函数。

gets可以接收空格;而scanf遇到空格、回车和Tab键都会认为输入结束,所有它不能接收空格。

char string[15]; gets(string); /*遇到回车认为输入结束*/

scanf("%s",string); /*遇到空格认为输入结束*/

所以在输入的字符串中包含空格时,应该使用gets输入。

scanf和gets获取字符串时的区别

在C语言中,能构获取字符串的函数至少有两个:

1.scanf()

所在头文件:stdio.h

语法:scanf("格式控制字符串",变量地址列表);

接受字符串时:scanf("%s",字符数组名或指针);

2.gets()

所在头文件:stdio.h

语法:gets(字符数组名或指针);

两者在接受字符串时:

1.不同点:

scanf不能接受空格、制表符Tab、回车等;

而gets能够接受空格、制表符Tab和回车等;

2.相同点:

字符串接受结束后自动加'\0'。

例1:

#include <stdio.h>

main()

{

char ch1[10],ch2[10];

scanf("%s",ch1);

gets(ch2);

}

依次键入asd空格fg回车,asd空格fg回车,则ch1="asd\0",ch2="asd fg\0"。本回答被提问者采纳
第2个回答  2010-06-25
getchar();输入单个字符
gets();输入一串字符串

getche();//输入单个字符,不用输入回车确认,头文件:conio.h
第3个回答  2010-06-25
如果是输入字符串的话gets(); 字符getchar();
别的话没有可以替代的了。
不然就用文本输入
不要用标准输入
第4个回答  2010-06-25
#include "stdio.h"
main()
{char a[1];
gets(a); /*从键盘输入字符数组a*/
puts(a); /*输出a*/

这个只是限于字符数组。
我知道也只有这个了。
相似回答