C语言中的输入输出函数

一、字符数据输入输出函数


1.putchar(),输出一个字符:

#include <stdio.h>

int main() {
	char cChar1, cChar2, cChar3, cChar4;
	cChar1 = 'H';
	cChar2 = 'E';
	cChar3 = 'L';
	cChar4 = 'O';

	putchar(cChar1);
	putchar(cChar2);
	putchar(cChar3);
	putchar(cChar3);
	putchar(cChar4);
	putchar('\n');
}

2.getchar(),输入一个字符:

#include <stdio.h>

int main() {
	char cChar1,cChar2;
	cChar1=getchar();
	putchar(cChar1);
	putchar('\n');
	getchar();
	cChar2=getchar();
	putchar(cChar2);
	putchar('\n');
	return 0;
}

这里遇到了两个问题
①getchar()时输入法是默认中文的,所以想要得到结果就得输入字符+回车+回车,第一个回车是确认要输的字符,第二个回车才是getchar的结束确认,将输入法改为英文就可以避免这个问题。
②在输入时回车也算是一个字符,所以如果再次使用getchar()那么将直接获得这个回车。

二、字符串输入输出函数


1.puts

#include <stdio.h>

int main() {
	char Char[] = "ILOVECHINA";
	char* pChar = Char;
	printf("%c%c%c%c\n", Char[1], pChar[1], *(Char + 1),*(pChar+1));
	int len = sizeof(Char);
	printf("%d\n", len);
	printf("%p,%p,%p,%p,%p,%p\n", Char, pChar, &Char, Char + 1, pChar + 1, &Char + 1);
	puts(pChar);
}

puts是以\0为结束标志的(字符串最后一个字符就是\0)
这里顺便验证了数组名与地址之间的一些关系:
数组名是数组开始的地址,也就是Char[0]的地址。
对数组名+1等价于对数组的起始地址+1等价于对数组的起始地址+sizeof(char)。
对数组名取地址得到的仍然是数组的起始地址,但是这个地址的基本单位为一个数组,也就是对该地址+1得到的是数组的起始地址+sizeof(Char)。

2.gets

#include <stdio.h>

int main() {
	char sString[30];
	gets_s(sString);
	puts(sString);
	char sString1[30];
	gets_s(sString1);
	puts(sString1);
}

这里测试了一下gets后是否需要用getchar吃掉回车,结果是不需要的

三、格式输入输出函数

1.printf(格式字符,输出列表)

格式字符功能
d/i带符号十进制整数
o无符号八进制整数
x/X无符号16进制整数,x用小写字母输出,X用大写字母输出
u无符号十进制整数
c输出一个字符
f输出字符串

%10s,若字符串大于10位,则正常输出,若字符串小于10位,则在左边补0,补满十位
%-10s,若字符串大于10位,则正常输出,若字符串小于10位,则在右边补0,补满十位
%10.3s,只取字符串左边3位输出,在左边补0,补满十位
%-10.3s,只取字符串左边3位输出,在右边补0,补满十位

2.scanf(格式控制,地址列表)

#include <stdio.h>

int main() {
	char cChar[30];
	char cChar1[30];
	scanf_s("%s", &cChar,sizeof(cChar));
	//putchar(getchar());     //去回车
	scanf_s("%s", &cChar1,sizeof(cChar1)); 
	printf("%s,%s", cChar,cChar);
}

scanf使用空白字符来分隔输入的数据,所以回车对scanf并没有影响。
scanf_s("%d,%d", &G->numVertexs,sizeof(int), &G->numEdges,sizeof(int));对于这种%d,%d,那么在输入数据的时候也只能用逗号分隔

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值