制作企业网站的app,网站的栏目有什么名字,装修风格效果图小户型,站长网站优点读取字符串的函数
1.gets()函数 说明#xff1a;gets函数简单易用#xff0c;它读取整行输入#xff0c;直至遇到换行符#xff0c;然后丢掉换行符#xff0c;储存其余字符#xff0c;并在末尾添加一个空字符使其成为一个C字符串。它经常和puts#xff08;#xff09;…读取字符串的函数
1.gets()函数 说明gets函数简单易用它读取整行输入直至遇到换行符然后丢掉换行符储存其余字符并在末尾添加一个空字符使其成为一个C字符串。它经常和puts函数配对使用。
在使用scanf输入一个字符后回车而下面的gets函数就直接接收了这个\n因此无法读取外部输入。
但gets()函数存在一个严重的缺陷这个缺陷就是它不会检查数组是否能够装的下输入行这可能导致大问题。
2.fgets()函数不是所有的编译器都支持例如CodeBlocks
fgets()和gets()的区别
1.fgets()函数通过的第2个参数指明了读入字符的最大数量。如果给参数的值是n那么fgets()将读入n-1个字符或者遇到第一个换行符为止。
2.如果fgets()读到一个换行符会把它储存到字符串中。这点与gets不同gets()会丢弃换行符。
3.fgets()函数第3个参数指明要读入的文件。如果读入从键盘输入的数据则以stdin(标准输入)作为参数该标识符定义在stdio.h中。
因为fgets()函数把换行符放在字符串的末尾假设输入行不溢出通常要与fputs()函数和puts类似配对使用除非该函数不在字符串末尾加换行符。fputs()函数的第2个参数指明它要写的文件。如果要显示在计算机显示器上应使用stdout(标准输出)作为该参数。
3.scanf()函数
1.scanf以下一个空白字符空行、空格、制符表或换行符作为字符串的结束。
2.如果指定了字段宽度如%10s那么scanf将读取10个字符或读到第一个空白字符停止先满足的条件是结束输入的条件
4.getchar()函数
getchar()函数一次只能输入一个字符。
输出字符串的函数
1.puts()函数
1.puts()函数在显示字符串时会自动在其末尾添加一个换行符。
2.有双引号括起来的内容是字符串常量只能是字母和数字不能是中文且被视为该字符串的地址。
3.数组名也被看作是地址。
2.fputs()函数编译器不一定支持
fputs()函数的第2个参数指明它要写的文件。如果要显示在计算机显示器上应使用stdout(标准输出)作为该参数。
3.printf()函数
和puts()函数一样printf()也把字符串的地址当作参数。虽然printf()函数没有puts()函数那么方便且计算机执行的时间也更长但它更多才多艺因为它可以格式化不同的数据类型。
4.putchar()函数
只能输出一个字符通常与getchar()搭配使用。
处理字符串的函数
C库提供了多个处理字符串的函数ANSI C把这些函数的原型放在string.h头文件中。其中最常用的函数有strlen()、strcat()、strcmp()、strncmp()、strcpy()和strncpy()。另外还有sprintf()函数其原型在stdio.h头文件中。
1.strlen()函数
格式strlen(s);
s可以是字符数组名或是字符串。
用于统计字符串的长度。
2.strcat()函数
格式strcat(a,b);
a只是字符数组名b可以是字符数组名或是字符串常量。
strcat()用于拼接字符串函数接受两个字符串作为参数该函数把第2个字符串的备份附加在第1个字符串末尾并把拼接后形成的新字符串作为第1个字符串第2个字符串不变。strcat()函数的类型是char*(即指向char的指针)。该函数返回第1个参数。 3.strncat()函数
格式strncat(a,b,n);
a只是字符数组名b可以是字符数组名或是字符串常量n是一个整型常量。
strcat()函数无法检测第1个数组是否能容纳第2个字符串当然可以用strlen()查看第1个数组的长度。注意要给拼接后的字符串长度加1才够空间存放末尾的空字符或者用strncat()该函数的第3个参数指定了最大添加字符数。例如strncat(a,b,10);将b字符串的内容附加给a在加到第10个字符或遇到字符串时停止。因此算上空字符无论哪种情况都要添加空字符a数组应该足够大以容纳a字符串不包括空字符、10个字符和末尾的空字符。 4.strcmp()函数
格式strcmp(a,b);
a可以是字符数组名或是字符串常量b可以是字符数组名或是字符串常量。
比较过程是从两个字符串的起始位置开始依次比较对应位置上字符的ASCII码值的大小如果ASCII码值相等则继续比较下一个字符否则ASCII码值大的字符串大。直到遇到不同字符或‘\0’时比较结束。
a与b相同时strcmp(a,b)的值为0
a大于b时strcmp(a,b)的值为一个正数
a小于b时strcmp(a,b)的值为一个负数
其它系统可能返回两者的ASCII码之差。 注意1.该函数比较的是字符串不是字符所以其参数应该是字符串例”apple“和”A“而不是字符‘A’。
2.strcmp()比较所有的字符不只是字母。
5.strncmp()函数
格式strncmp(a,b,n);
用法与strcmp相似直到第n个字符。
6.strcpy()函数
格式strcpy(a,b);
功能把b复制到a中。
a只是字符数组名b可以是字符数组名或是字符串常量。
a数组的长度应不小于b数组的长度以保证能够存储b数组。 该函数还有两个有用的属性
1.strcpy()的返回类型是char*该函数返回的是的一个参数的值即一个字符的地址。
2.第1个参数不必指向数组的开始。这个属性可以用于拷贝数组的一部分。
7.strncpy()函数
格式strncpy(a,b,n);
功能把字符串b的前n个字符复制到a中。
8.sprintf()函数
格式sprintf(s,%s%s,a,b);
该函数声明在stdio.h中而不是string.h中。该函数与printf()类似但它是把数据写入字符串而不是打印在显示器上。因此该函数可以把多个元素组合成一个字符串。sprintf()的第1个参数是目标字符串的地址。其余参数和printf()相同即格式字符串和代写入项的列表。
功能1、可以控制精度
char str[20];
double f14.309948;
sprintf(str,”%6.2f”,f);
2、可以将多个数值数据连接起来
char str[20];
int a20984,b48090;
sprintf(str,”%3d%6d”,a,b);
str[]”20984 48090”
3、可以将多个字符串连接成字符串
char str[20];
char s1[5]{‘A’,’B’,’C’};
char s2[5]{‘T’,’Y’,’x’};
sprintf(str,”%.3s%.3s”,s1,s2); %m.n在字符串的输出中m表示宽度字符串共占的列数n表示实际的字符数。%m.n在浮点数中m也表示宽度n表示小数的位数。 sprintf 的格式控制串中既然可以插入各种东西并最终把它们“连成一串”自然也就能够连接字符串从而在许多场合可以替代strcat但sprintf 能够一次连接多个字符串自然也可以同时在它们中间插入别的内容总之非常灵活。比如 char* who “I”; char* whom “CSDN”; sprintf(s, “%s love %s.”, who, whom); //产生“I love CSDN. char a1[] {‘A’, ‘B’, ‘C’, ‘D’, ‘E’, ‘F’, ‘G’}; char a2[] {‘H’, ‘I’, ‘J’, ‘K’, ‘L’, ‘M’, ‘N’}; 如果 sprintf(s, “%s%s”, a1, a2); //Don’t do that! 十有八九要出问题了。是否可以改成 sprintf(s, “%7s%7s”, a1, a2); 也没好到哪儿去正确的应该是 sprintf(s, “%.7s%.7s”, a1, a2);//产生“ABCDEFGHIJKLMN” 这可以类比打印浮点数的”%m/nf”在”%m.ns”中m 表示占用宽度字符串长度不足时补空格超出了则按照实际宽度打印n 才表示从相应的字符串中最多取用的字符数。通常在打印字符串时m 没什么大用还是点号后面的n 用的多。自然也可以前后都只取部分字符 sprintf(s, “%.6s%.5s”, a1, a2);//产生“ABCDEFHIJKL” ———————————————— 有参考过https://blog.csdn.net/weixin_45525272/article/details/104480563