序言: 输出
%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 主要功能:字符在字符串中的查找