关于sprintf,fprintf,strstr,strchr函数的使用

序言: 输出

%m.pX    m:输出的长度(不足长度按空格补齐) 

p:输出的小数位数(输出为浮点数时)   输出位数 不足0补齐(输出为整型时)

 X:输出的格式 

一、sprintf()函数详解

首先与printf的区别:打印的目的地不同   sprintf()打印到字符串中,printf()直接在命令行输出。

①将整型数字打印到字符串中(将整数转化为字符串)

默认右对齐

sprinf(ch,"%d",123);   // 将"123"打印到字符数组ch中

若输出需要空格  

sprintf(ch,"%4d%4d",123,123)   //  将会打印 成   “    123    123”

左对齐格式

sprintf(ch,"%-4d%-4d",123,456)   //    打印成“123    456   ”

关于打印数字的进制问题

打印10进制数字 

sprintf(ch,"%d",123);   // 打印到ch数组中 ‘123’

在前面补0操作

sprintf(ch,"%04d",123);   // 打印到ch数组中 ‘0123’  共保留4位

 打印16进制

sprintf(ch,"%08x",123);   //   打印成16进制   ‘0000007b’

 ②将浮点数(小数)打印

sprintf(ch,"%f",5.20);    // 打印成 “5.20”  %f %lf 均可

 int n=520

sprintf(ch,"%.2f",n)   // 错误  记得要强制转换

sprintf(ch,"%.2f",(double)n);   // 正确   520.00    

 ③连接字符串 (代替strcat  strcat只能连接字符串)

将两个字符串连接成新的字符串   // 亦可留出空格  %4s

char ch1[8]='computer';

char ch2[8]='game';

sprintf(ch3,"%s and %s",ch1,ch2);  //   ch3:"computer and game"

 ④sprintf()的返回值    (字符串的长度)

int len=sprintf(ch,"%d",ch2);   // 无需strlen函数求字符串长度

 二、fprintf函数详解

与sprintf printf 都不同, fprintf打印到文档中

#include<stdio.h>
#include<string.h>
#include<math.h>
char ch1[20001],ch2[20001],ch3[20001];
int main()
{
    scanf("%s",ch1); 
    scanf("%s",ch2);
    int len=sprintf(ch3,"%s and %s",ch1,ch2);  // sprintf 返回字符串长度
    fprintf(stdout,"%s\n",ch3);  // 通过fprintf 输出到屏幕
    fprintf(stdout,"%d %d",len,strlen(ch3));
    return 0;
}

三、strstr函数详解

strstr函数功能:查找字符串(在一个字符串中查找另一个字符串)

strstr(ch1,ch2) : 在ch1中查找ch2  判断ch2是否为ch1的子串

关于返回值:①当ch2不为ch1的子串 返回值为NULL (指针)

                      ②当ch2为ch1的子串  返回为 ch2第一次出现在ch1的位置开始到ch1的结尾

#include<stdio.h>
#include<string.h>
#include<math.h>
char ch1[20001],ch2[20001],ch3[20001];
int main()
{
    scanf("%s",ch1); 
    scanf("%s",ch2);
    printf("%s\n",strstr(ch1,ch2));  
    if(strstr(ch1,ch2)==NULL) printf("NO");
    else printf("YES");
    return 0;
}
/*  
    输入样例 abc  b 
    strstr(ch1,ch2)的结果为  bc
    输出 YES
*/

关于实现strstr结果的保存  使用如下定义 将strstr函数的结果保存到ans里面

char* ans=strstr(ch1,ch2);  
printf("%s\n",ans);

 四、strchr()函数详解

strchr()函数与 strstr函数功能相同 区别在于strchr()函数是查找某个字符

具体功能:查找某个字符串中是否含有某个字符,如果含有,则返回该第一个字符到字符串的末尾,否则返回NULL

操作实例:

#include<string.h>
#include<stdio.h>
#include<stdlib.h>
int main()
{
    char *ch1="zqzb"; // 给定字符串
    char c ;  //指定一个字符
    char *ch2;
    scanf("%c",&c);
    ch2=strchr(ch1,c);  //strchr 查找某个字符 c  并将其保存在ch2 数组中
    if(ch2!=NULL)
    {
        printf("YES\n");
        printf("%s",ch2);   
    }
    else
     printf("NO");
    //system("pause");
    return 0;
}
/*  输入 q
    输出 
        YES
        qzb

ps:能否将上述代码的ch1 变成输入呢?   或者是如何 使ch1输入

总结

关于这四个函数 最常用的应该是1.3.4

sprintf 主要功能:进行字符串的打印(将整型转化为字符)or进行字符串的连接

fprintf 主要功能:将结果打印在文档里 (不常用)

strstr  主要功能:进行字符串之间的查找  (注意查找结果的储存)

strchr        主要功能:字符在字符串中的查找  

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值