fgets、scanf、gets、getchar、fscanf、sscanf这些api有什么区别,给一些用例展示一下区别
时间: 2023-12-28 18:56:58 浏览: 129
C语言中getchar, gets, 和 scanf 三种不同函数的区别
fgets、scanf、gets、getchar、fscanf和sscanf都是C语言中用于输入的API,它们的区别在于:
1. fgets()函数从指定的文件流中读取一行字符,同时还可以指定读取的最大字符数,读取到换行符或文件结束符时停止。常用于读取文本文件中的内容。
2. scanf()函数根据指定的格式字符串从标准输入或指定文件流中读取字符或数字,并把读取到的值存入对应的变量中。常用于从键盘或文件中读取数据。
3. gets()函数从标准输入读取一行字符,不限制读取的字符数,读取到换行符时停止。因为无法控制输入的字符数,容易发生缓冲区溢出的安全问题,不建议使用。
4. getchar()函数从标准输入读取一个字符。常用于字符逐个处理的情况。
5. fscanf()函数根据指定的格式字符串从指定文件流中读取字符或数字,与scanf()函数类似。
6. sscanf()函数根据指定的格式字符串从一个字符串中读取字符或数字,并把读取到的值存入对应的变量中。常用于字符串解析的情况。
下面是一些使用示例:
(1)fgets()函数示例:
```
#include <stdio.h>
int main()
{
char str[100];
FILE *fp = fopen("test.txt", "r");
fgets(str, 100, fp);
printf("读取的内容是:%s", str);
fclose(fp);
return 0;
}
```
(2)scanf()函数示例:
```
#include <stdio.h>
int main()
{
int num;
printf("请输入一个整数:");
scanf("%d", &num);
printf("您输入的整数是:%d", num);
return 0;
}
```
(3)gets()函数示例:
```
#include <stdio.h>
int main()
{
char str[100];
printf("请输入一个字符串:");
gets(str);
printf("您输入的字符串是:%s", str);
return 0;
}
```
(4)getchar()函数示例:
```
#include <stdio.h>
int main()
{
char ch;
printf("请输入一个字符:");
ch = getchar();
printf("您输入的字符是:%c", ch);
return 0;
}
```
(5)fscanf()函数示例:
```
#include <stdio.h>
int main()
{
int num;
FILE *fp = fopen("test.txt", "r");
fscanf(fp, "%d", &num);
printf("读取的整数是:%d", num);
fclose(fp);
return 0;
}
```
(6)sscanf()函数示例:
```
#include <stdio.h>
int main()
{
char str[] = "123 45.6 abc";
int num;
float fnum;
char str2[10];
sscanf(str, "%d %f %s", &num, &fnum, str2);
printf("解析出的整数是:%d\n", num);
printf("解析出的浮点数是:%f\n", fnum);
printf("解析出的字符串是:%s", str2);
return 0;
}
```
阅读全文