常用易混的输入输出函数用法
来源:互联网 发布:服务网络占用硬盘 编辑:程序博客网 时间:2024/06/17 07:39
printf函数、putchar函数、puts函数
printf是输出一个字符串,putchar输出一个char。
打印格式
对应数据类型
含义
%d
int
接受整数值并将它表示为有符号的十进制整数
%hd
short int
短整数
%hu
unsigned short
无符号短整数
%o
unsigned int
无符号8进制整数
%u
unsigned int
无符号10进制整数
%x,%X
unsigned int
无符号16进制整数,x对应的是abcdef,X对应的是ABCDEF
%f
float
单精度浮点数
%lf
double
双精度浮点数
%e,%E
double
科学计数法表示的数,此处"e"的大小写代表在输出时用的"e"的大小写
%c
char
字符型。可以把输入的数字按照ASCII码相应转换为对应的字符
%s
char *
字符串。输出字符串中的字符直至字符串中的空字符(字符串以'\0'结尾,这个'\0'即空字符)
%p
void *
以16进制形式输出指针
%%
%
输出一个百分号
printf附加格式:
字符
含义
l(字母l)
附加在d,u,x,o前面,表示长整数
-
左对齐
m(代表一个整数)
数据最小宽度
0(数字0)
将输出的前面补上0直到占满指定列宽为止不可以搭配使用-
m.n(代表一个整数)
m指域宽,即对应的输出项在输出设备上所占的字符数。n指精度,用于说明输出的实型数的小数位数。对数值型的来说,未指定n时,隐含的精度为n=6位。
#include<stdio.h>
intputs(constchar *s);
功能:标准设备输出s字符串,在输出完成后自动输出一个'\n'。
参数:
s:字符串首地址
返回值:
成功:非负数
失败:-1
二.scanf函数、getchar函数、gets函数
Getchar 是从标准输入设备读取一个char
Scanf通过%转义的方式可以得到用户通过标准输入设备输入的数据
#include <stdio.h>
char *gets(char *s); 从标准输入设备读入字符,并保存到s指定的内存空间,直到出现换行符或读到文件的结尾为止。
S表示字符串的首地址;
区别:1.getchar每次只能输入一个字符
2.scanf 能输入连续的字符串,但遇到空格就会停止,且scanf输入的变量前一定要加&符号切记
3.gets(str)允许输入含有空格的字符串
三.sprintf()函数、sscanf()函数
#include<stdio.h>
intsprintf(char *_CRT_SECURE_NO_WARNINGS, constchar *format, ...);
功能:根据参数format字符串来转换并格式化数据,然后将结果输出到str指定的空间中,直到出现字符串结束符 '\0' 为止。
参数:
str:字符串首地址
format:字符串格式,用法和printf()一样
返回值:
成功:实际格式化的字符个数
失败: - 1
chardst[100] = { 0 };
inta = 10;
charsrc[] = "hello world";
printf("a = %d, src = %s", a, src);
printf("\n");
intlen = sprintf(dst, "a = %d, src = %s", a, src);
printf("dst = \" %s\"\n", dst);
printf("len = %d\n", len);
#include<stdio.h>
intsscanf(constchar *str, constchar *format, ...);
功能:从str指定的字符串读取数据,并根据参数format字符串来转换并格式化数据。
参数:
str:指定的字符串首地址
format:字符串格式,用法和scanf()一样
返回值:
成功:参数数目,成功转换的值的个数
失败: - 1
charsrc[] = "a=10, b=20";
inta;
intb;
sscanf(src, "a=%d, b=%d", &a, &b);
printf("a:%d, b:%d\n", a, b);
fgets()
#include<stdio.h>
char *fgets(char *s, intsize, FILE *stream);
功能:从stream指定的文件内读入字符,保存到s所指定的内存空间,直到出现换行字符、读到文件结尾或是已读了size - 1个字符为止,最后会自动加上字符 '\0' 作为字符串结束。
参数:
s:字符串
size:指定最大读取字符串的长度(size - 1)
stream:文件指针,如果读键盘输入的字符串,固定写为stdin
返回值:
成功:成功读取的字符串
读到文件尾或出错: NULL
fgets()在读取一个用户通过键盘输入的字符串的时候,同时把用户输入的回车也做为字符串的一部分。通过scanf和gets输入一个字符串的时候,不包含结尾的"\n",但通过fgets结尾多了"\n"。fgets()函数是安全的,不存在缓冲区溢出的问题。
charstr[100];
printf("请输入str: ");
fgets(str, sizeof(str), stdin);
printf("str = \"%s\"\n", str);
fputs()
#include<stdio.h>
int fputs(constchar * str, FILE * stream);
功能:将str所指定的字符串写入到stream指定的文件中, 字符串结束符 '\0' 不写入文件。
参数:
str:字符串
stream:文件指针,如果把字符串输出到屏幕,固定写为stdout
返回值:
成功:0
失败:-1
fputs()是puts()的文件操作版本,但fputs()不会自动输出一个'\n'。
printf("hello world");
puts("hello world");
fputs("hello world", stdout);
10.3.1 按照字符读写文件fgetc、fputc
1)写文件
#include<stdio.h>
int fputc(int ch, FILE * stream);
功能:将ch转换为unsigned char后写入stream指定的文件中
参数:
ch:需要写入文件的字符
stream:文件指针
返回值:
成功:成功写入文件的字符
失败:返回-1
char buf[] = "this is a test for fputc";
int i = 0;
int n = strlen(buf);
for (i = 0; i < n; i++)
{
//往文件fp写入字符buf[i]
int ch = fputc(buf[i], fp);
printf("ch = %c\n", ch);
}
2)文件结尾
在C语言中,EOF表示文件结束符(end of file)。在while循环中以EOF作为文件结束标志,这种以EOF作为文件结束标志的文件,必须是文本文件。在文本文件中,数据都是以字符的ASCII代码值的形式存放。我们知道,ASCII代码值的范围是0~127,不可能出现-1,因此可以用EOF作为文件结束标志。
#defineEOF (-1)
当把数据以二进制形式存放到文件中时,就会有-1值的出现,因此不能采用EOF作为二进制文件的结束标志。为解决这一个问题,ANSI C提供一个feof函数,用来判断文件是否结束。feof函数既可用以判断二进制文件又可用以判断文本文件。
#include<stdio.h>
int feof(FILE * stream);
功能:检测是否读取到了文件结尾。判断的是最后一次"读操作的内容",不是当前位置内容(上一个内容)。
参数:
stream:文件指针
返回值:
非0值:已经到文件结尾
0:没有到文件结尾
3)读文件
#include<stdio.h>
int fgetc(FILE * stream);
功能:从stream指定的文件中读取一个字符
参数:
stream:文件指针
返回值:
成功:返回读取到的字符
失败:-1
char ch;
#if 0
while ((ch = fgetc(fp)) != EOF)
{
printf("%c", ch);
}
printf("\n");
#endif
while (!feof(fp)) //文件没有结束,则执行循环
{
ch = fgetc(fp);
printf("%c", ch);
}
printf("\n");
按照行读写文件fgets、fputs
1)写文件
#include<stdio.h>
int fputs(constchar * str, FILE * stream);
功能:将str所指定的字符串写入到stream指定的文件中,字符串结束符 '\0' 不写入文件。
参数:
str:字符串
stream:文件指针
返回值:
成功:0
失败:-1
char *buf[] = { "123456\n", "bbbbbbbbbb\n", "ccccccccccc\n" };
int i = 0;
int n = 3;
for (i = 0; i < n; i++)
{
int len = fputs(buf[i], fp);
printf("len = %d\n", len);
}
2)读文件
#include<stdio.h>
char * fgets(char * str, int size, FILE * stream);
功能:从stream指定的文件内读入字符,保存到str所指定的内存空间,直到出现换行字符、读到文件结尾或是已读了size - 1个字符为止,最后会自动加上字符 '\0' 作为字符串结束。
参数:
str:字符串
size:指定最大读取字符串的长度(size - 1)
stream:文件指针
返回值:
成功:成功读取的字符串
读到文件尾或出错: NULL
char buf[100] = 0;
while (!feof(fp)) //文件没有结束
{
memset(buf, 0, sizeof(buf));
char *p = fgets(buf, sizeof(buf), fp);
if (p != NULL)
{
printf("buf = %s", buf);
}
}
按照格式化文件fprintf、fscanf
1)写文件
#include<stdio.h>
int fprintf(FILE * stream, constchar * format, ...);
功能:根据参数format字符串来转换并格式化数据,然后将结果输出到stream指定的文件中,指定出现字符串结束符 '\0' 为止。
参数:
stream:已经打开的文件
format:字符串格式,用法和printf()一样
返回值:
成功:实际写入文件的字符个数
失败:-1
fprintf(fp, "%d %d %d\n", 1, 2, 3);
读文件
#include<stdio.h>
int fscanf(FILE * stream, constchar * format, ...);
功能:从stream指定的文件读取字符串,并根据参数format字符串来转换并格式化数据。
参数:
stream:已经打开的文件
format:字符串格式,用法和scanf()一样
返回值:
成功:参数数目,成功转换的值的个数
失败: - 1
int a = 0;
int b = 0;
int c = 0;
fscanf(fp, "%d %d %d\n", &a, &b, &c);
printf("a = %d, b = %d, c = %d\n", a, b, c);
- 常用易混的输入输出函数用法
- 输入输出函数的用法
- 自己总结的常用的输入输出函数
- C++输入输出函数的用法(转载)
- c语言输入输出函数printf与scanf的用法格式
- 二,1,常用函数,输入输出
- 输入输出外一些常用函数
- 输入输出迭代子的用法
- 常用的输入输出方法
- 常用的输入输出方法
- 常用sql函数的用法
- 常用sql函数的用法
- 常用sql函数的用法
- Oracle 常用函数的用法
- 文件的输入输出函数
- 文件的输入输出函数
- 文件的输入输出函数
- 文件的输入输出函数
- 字符串
- 计算机设计思想 —— 代理(proxy)
- redis集群操作
- vb.net 教程 20-3 控制Ie浏览器 4
- Apache Storm 官方文档 —— Trident 教程 原文链接 译者:魏勇 Trident 是 Storm 的一种高度抽象的实时计算模型,它可以将高吞吐量(每秒百万级)数据输入、有状
- 常用易混的输入输出函数用法
- Spring面试60题
- 【Oracle】Clob字段读取,写入,更新
- JDBC总结
- Python3:《机器学习实战》之朴素贝叶斯(1)算法概述
- 图书管理系统(数据结构-C++)
- 关于vs2015 MvcContrib 多项目 无法找到资源 解决办法
- LeetCode 19. Remove Nth Node From End of List 解题
- 快速掌握单例模式