C语言中的scanf、printf 和 fprintf、fwrite 和getchar、puts、gets 和 strchr用法小记

1、scanf 和 printf

格式化输入输出,需要注意的是scanf双引号里的内容要求对应输入,如下程序中“%d,%d”中的逗号,必须输入。

#include<stdio.h>
main()
{
	int price=0, num=0;
	int b;
	printf("请输入单价和数量:"); 
	scanf("%d,%d", &price,&num);
	b=num*price; 
	printf("总金额为:%d",b);
	
}

2、fprintf、fwrite

fprintf:将变量中的内容按照指定格式以文本形式打印到对应文件中。

fwrite:将变量中的内容按照指定类型以二进制形式写入对应文件中。

#include <stdio.h>
void main()
{
    int num;
    char name[5];
    FILE *fp;
    if ((fp = fopen("t.txt", "w")) == NULL)
        printf("cannot open file!\n");
    scanf("%d %s",&num,name);
    fprintf(fp, "%d %s", num, name);
    fclose(fp);
 
    if ((fp = fopen("tt.txt", "w")) == NULL)
        printf("cannot open file!\n");
    fwrite(&num, sizeof(int), 1, fp);      // sizeof(int)指定写入是单元大小,1指定单元个数 
    fwrite(name, sizeof(char), 5, fp);
    fclose(fp); 
}

3、getchar与scanf的区别

getchar会读入键盘上的输入,包括空格,代码演示:

#include<stdio.h>
void main()
{
	// int a[10];
	char a[10];
	int i;
	for(i=0;i<10;i++)   
	{
		printf("程序已经开始了\n") ;
		a[i]=getchar();      
		// 程序到了上面那句,会在终端等待输入,按回车将终端缓存的数据再输入程序
		// getchar() 只取缓存中的一个字符,其余返回缓存,程序进入下一步,
		printf("%d\n---\n",a[i]);
		// printf("%c\n---\n",a[i]);
		// 当i小于10时,满足循环条件,由于stdin中存在缓存的数据,因此getchar()不再等待终端输入
		// 当stdin 中数据读干净之后,getchar 等待终端的输入,再执行循环  
	}
	
}

scanf不读取空格,代码演示:

#include<stdio.h>
void main()
{
	int a[10];
	int i;
	for(i=0;i<10;i++)
	{
		scanf("%d",&a[i]);
		// 程序到了上面那句,会在终端等待输入,按回车将终端缓存的数据再输入程序
		// scanf() 取缓存中的数字,空格不被读入,其余返回缓存,程序进入下一步,
		printf("a[%d]中的存的是%d\n---\n",i,a[i]);
		// 当i小于10时,满足循环条件,由于stdin中存在缓存的数据,因此scanf()不再等待终端输入
		// 当stdin 中数据读干净之后,scanf 等待终端的输入,再执行循环 
	}
	
 } 

getchar和scanf连用:

#include<stdio.h>
void main()
{
	int a[10];
	char b[10];
	int i;
	for(i=0;i<10;i++)   
	{
		printf("程序已经开始了\n") ;
		b[i]=getchar();      
		scanf("%d",&a[i]);
		printf("%c\n---\n",b[i]);
		printf("%d\n---\n",a[i]);
		// 当i小于10时,满足循环条件,由于stdin中存在缓存的数据,因此getchar()不再等待终端输入
		// 当stdin 中数据读干净之后,getchar 等待终端的输入,再执行循环  
	}
	
}

4、puts

puts:函数用来向标准输出设备屏幕输出字符串并换行

# include <stdio.h>
int main(void)
{
    char name[] = "祖国!";
    printf("%s\n", name);  //用printf输出
    puts(name);  //用puts()输出
    puts("我爱你!");  //直接输出字符串
    return 0;
}

5、gets 和strchr

gets()从标准输入(键盘)读入一行数据,所谓读取一行,就是遇到换行符就返回。gets()函数并不读取换行符'\n',它会把换行符替换成空字符'\0',作为c语言字符串结束的标志。

#include<stdio.h>
#include<string.h>
int main(){
 char string[50];
 char *str,ch;
 printf("请输入字符串:\n");
 gets(string);
 printf("请输入想要进行匹配的字符:\n");
 scanf("%c",&ch);
 str=strchr(string,ch);  // 查找指定字符 
 if(str){
  printf("字符%c在字符串中位置是:%d\n",ch,str-string);//对照截图:str为地址,值为4;string也为地址,值为0(数组的变量名代表首地址)
  printf("输出从字符%c后的字符串为:%s\n",ch,str);
 }else{
  printf("没有找到跟字符匹配的字符串!\n");
 }
    return 0;
}

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Op_chaos

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值