本文的编写是为了在学习c++的时候加深自己的记忆,同时也为与我一般的初学者提供一些参考,此处特别感谢微信公众号“c/c++的编程教室”,我的学习过程按照公众号的推送进行学习的!
1.从输入hello world开始进行实验,printf()格式化输出函数
(1)直接采用printf()显示字符串
#include<stdio.h>//用于标准输入输出的头文件
void main()
{
printf("hello world\n");
getchar();//暂停屏幕
}
(2)加入show函数
#include<stdio.h>void show();//show()函数声明
void main()
{
show();
getchar();
}
void show()
{
printf("hello world\n");
}
(3)赋值给char 变量,以字符串的形式输出
#include<stdio.h>
void main()
{
char world[] = "hello world";//char 型数组,长度由初始默认
printf("%s\n", world);
getchar();
}
此处有必要讲一下printf()的控制字符
%s 字符串
%c 单个字符
%d(%i) 有符号的十进制整数
%u 无符号的十进制整数
%o 无符号八进制整数
%x(%X) 无符号十六进制整数
%f 浮点数,十进制计数法
%a (%A) 浮点数,16进制数字和p-P-计数法
%e(%E) 浮点数,e-E-计数法
%g(%G) 根据数值不同自动选择
%p 指针
此处既然讲到了显示控制字符,便讲一下显示精度与左右对齐
#include<stdio.h>void main()
{
char world[] = "hello world";//char 型数组,长度由初始默认
printf("#%20.4s#\n", world);//20是只显示长度,此处显示占20个字符的长度。4是显示精度,此处只显示4个字符
printf("#%20.12s#\n", world);//默认左对齐
printf("#%-20.12s#\n", world);//-表示右对齐
getchar();
}
关于数字的显示,此处做一些说明
位(bit)与字节(Byte)的转换:1Byte=8bit
%.el 期望输出是double类型,占8个字节
%d 期望输出为int型,占4个字节
%ld 期望输出为long型,占4个字节
%lld 期望输出为long long 型,占8个字节
查看各种输出类型的最大值可通过limit这个库函数,包含在头文件#include<limit.h>里面
#include<stdio.h>
#include<limits.h>//查看数值类型的最大值
int main()
{
printf("int类型的最大值:%ld.\n", INT_MAX);
printf("long类型的最大值:%ld.\n",LONG_MAX);
getchar();
return 0;
}
2.从键盘读入字符、单词或者数字
scanf()函数是格式化输入函数,从键盘读取输入信息,但是由于使用不够安全,现采用与之功能相同的scanf_s()函数,差别在于后者多了一个最多字符限制数字
(1)输入数字进行简单运算,注意同时输入两个数字时中间用逗号隔开
#include<stdio.h>
int main()
{
int a, b;
printf("请输入数字:\n");
scanf_s("%d", &a);
scanf_s("%d", &b);
printf("a*b=%d\n", a*b);
while (1);
return 0;
}
(2)输入字符串,注意scanf_s()读取到空格就停止,故只能读取一个单词或者数字,字符
#include<stdio.h>
int main()
{
char world[20];
printf("请输入字符串:\n");
scanf_s("%s", world,20);
printf("你输入的字符串是:%s\n", world);
while (1);
return 0;
}
3.输入包含多个单词的字符串
gets_s()函数是gets()函数的安全函数,采用gets_s()函数来获取字符串,返回指针
#include<stdio.h>int main()
{
char name[20];
char *ptr;
printf("请输入字符串:\n");
ptr=gets_s(name);
printf("你输入的字符串是:%s\n", name);
printf("ptr=:%s\n", ptr);
while (1);
return 0;
}
4.getchar()和putchar()
#include <stdlib.h>//system
#include <stdio.h>//输入输出
int main()
{
int ch;
printf("请输入一个字符串:\n");
while ((ch = getchar()) != '\n')
putchar(ch);
putchar('\n');
system("PAUSE");
return 0;
}
5.总结今天学习的简单的输入输出函数对
(1)3个标准输入函数
scanf_s():获取单词而非字符串,遇空格结束
gets_s():获取字符串,包括空格与标点符号,遇换行或者\n结束
fgets():是获取文件的版本,关于文件的获取后面再学习
(2)3个标准输出函数
printf():标准格式化输出,效率高,仅次于puts()
puts():效率最高的输出函数,但是只能配合gets()使用,且只能输出字符串
fputs():puts()的文件版本,后续再做学习
比较printf()和putf()的时间差别
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
const int MAX = 10000;
int main()
{
char name[MAX];
long StartTime, EndTime, TimeForPrintf, TimeForPutchar;
for (int i = 0; i<MAX; i++)
name[i] = 'a';
StartTime = clock();
for (int i = 0; i<MAX; i++)
printf("%c ", name[i]);
EndTime = clock();
TimeForPrintf = EndTime - StartTime;
StartTime = clock();
for (int i = 0; i<MAX; i++)
putchar(name[i]);
EndTime = clock();
TimeForPutchar = EndTime - StartTime;
putchar('\n');
printf("TimeForPrintf = %ld ms\n", TimeForPrintf);
printf("TimeForPutchar = %ld ms\n", TimeForPutchar);
system("PAUSE");
}
(3)getchar()和putchar()