如题所述
第1个回答 2019-03-12
gets函数是输入一行字符串,以回车结束,并且回车键会被过滤掉,不会被读到字符串中。
getchar()是读取一个字符,包括回车键也会被读成一个字符。
这个程序在输入name[i]前,用getchar()把之前scanf("%d",&num[i]);中,输入整数后按的回车键给读走,否则这个回车键会导致gets直接读到一个空字符串。
getchar()是读取一个字符,包括回车键也会被读成一个字符。
这个程序在输入name[i]前,用getchar()把之前scanf("%d",&num[i]);中,输入整数后按的回车键给读走,否则这个回车键会导致gets直接读到一个空字符串。
第2个回答 2020-02-12
gets函数和scanf函数都可以作为字符串的输入函数,
相同点:都是将从键盘输入的字符串存入数组中,输入完成后要以回车来结束输入。
不同点:利用sanf时,在输入过程中碰到空格时系统认为输入结束,并将空格之前的字符作为有效字符存入数组中,并在尾部追加\0作为结束标志。利用gets时,空格符被看作是有效字符,也就是说只有碰到回车符时系统才认为输入结束。
相同点:都是将从键盘输入的字符串存入数组中,输入完成后要以回车来结束输入。
不同点:利用sanf时,在输入过程中碰到空格时系统认为输入结束,并将空格之前的字符作为有效字符存入数组中,并在尾部追加\0作为结束标志。利用gets时,空格符被看作是有效字符,也就是说只有碰到回车符时系统才认为输入结束。
第3个回答 2020-03-12
都是从输入流中读取数据,但功能有很大差别:
1
操作类型不同。
gets函数仅用于读入字符串。
scanf为格式化输出函数,可以读入任意C语言基础类型的变量值,而不是仅限于字符串(char*)类型。
2
截止字符不同。
gets函数固定的以换行符作为结尾,遇到换行符时结束输入。
scanf函数默认以空白函数结尾,同时可以对截止函数进行修改。
3
对截止字符处理不同。
gets函数会读入截止字符\n,
同时将\n自动替换为\0.
scanf遇到截止字符时不会继续读取,截止字符将存储于输入缓冲中。
4
返回值类型不同。
gets的返回值为char*型,当读入成功时会返回输入的字符串指针地址,出错时返回NULL。
scanf返回值为int型,返回实际成功赋值的变量个数,当遇到文件结尾标识时返回EOF。
1
操作类型不同。
gets函数仅用于读入字符串。
scanf为格式化输出函数,可以读入任意C语言基础类型的变量值,而不是仅限于字符串(char*)类型。
2
截止字符不同。
gets函数固定的以换行符作为结尾,遇到换行符时结束输入。
scanf函数默认以空白函数结尾,同时可以对截止函数进行修改。
3
对截止字符处理不同。
gets函数会读入截止字符\n,
同时将\n自动替换为\0.
scanf遇到截止字符时不会继续读取,截止字符将存储于输入缓冲中。
4
返回值类型不同。
gets的返回值为char*型,当读入成功时会返回输入的字符串指针地址,出错时返回NULL。
scanf返回值为int型,返回实际成功赋值的变量个数,当遇到文件结尾标识时返回EOF。
第4个回答 2019-03-02
gets()函数的话会连zhanghao后面的回车也当做字符输入了,对比的话肯定就是跟zhanghao不一样;
第5个回答 2019-04-18
是不是这代码前面还有什么输入语句,反正在我电脑上运行结果一样.
gets与scanf的区别是gets一次读一行,scanf遇到空格回车结束!
gets与scanf的区别是gets一次读一行,scanf遇到空格回车结束!