scanf("%s",ss);与gets(ss);有什么区别
时间: 2023-07-18 13:15:02 浏览: 191
scanf("%s",ss)和gets(ss)都可以用来读取字符串,但是它们有以下区别:
1. 输入方式不同:scanf("%s",ss)需要输入字符串,并以空格、制表符或换行符作为字符串的结束标志,gets(ss)则直接读入一整行字符串,直到遇到换行符为止。
2. 安全性不同:gets(ss)存在缓冲区溢出的风险,因为它不会检查输入的字符串长度是否超过了缓冲区的大小。而scanf("%s",ss)可以通过指定最大输入长度来保证输入的字符串不会超出缓冲区大小。
3. 输入错误处理不同:scanf("%s",ss)遇到输入错误时会返回0,而gets(ss)遇到输入错误时会返回NULL。
因此,建议使用scanf("%s",ss)来读取字符串,同时指定最大输入长度,以保证程序的安全性。
相关问题
scanf string
根据引用,scanf函数在输入string类型的数据时并不方便,因为string并不是C的原生类型。但是可以通过一些方法实现scanf输入string类型的数据。然而,不建议使用scanf输入string类型的字符串。
根据引用,当输入的字符串中包含空格时,应该使用gets函数进行输入,而不是scanf。
根据引用,可以使用scanf输入string类型的变量。例如,可以使用scanf("%s", &ss)来输入字符串。但是需要注意的是,使用scanf输入得到的变量ss的长度为0,而使用cin输入则可以得到正常的结果。
综上所述,scanf可以用来输入string类型的变量,但不建议使用,而应该使用gets或者cin进行输入。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* [使用scanf输入string类型变量](https://blog.csdn.net/liu16659/article/details/86772657)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"]
- *2* [C语言gets()和scanf()函数的区别](https://download.csdn.net/download/weixin_38545332/14911705)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"]
- *3* [用scanf输入string类型的变量](https://blog.csdn.net/weixin_44246206/article/details/122882414)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"]
[ .reference_list ]
请编写c语言程序,程序里面有函数fun,fun的功能是:求出ss所指字符串中指定字符的个数,并返回此值。
好的,以下是实现该功能的C语言程序:
```
#include <stdio.h>
int fun(char *ss, char chr) {
int count = 0;
while (*ss != '\0') {
if (*ss == chr) {
count++;
}
ss++;
}
return count;
}
int main() {
char str[100];
char c;
printf("请输入字符串:");
gets(str);
printf("请输入要查找的字符:");
scanf("%c", &c);
int num = fun(str, c);
printf("查找到字符'%c'的个数为:%d\n", c, num);
return 0;
}
```
在这个程序中,首先定义了一个名为`fun`的函数,其接受两个参数,第一个参数`ss`是一个指向字符类型的指针,指向需要查找的字符串,第二个参数`chr`是需要查找的字符。函数遍历字符串,统计出字符出现的次数,最后将该值返回。
在`main`函数中,首先使用`gets`函数获取用户输入的字符串,再使用`scanf`函数获取用户输入的待查找的字符,调用`fun`函数进行查找,并打印结果。
希望以上程序能够满足您的需求。
阅读全文