深究“字符串”

字符串

  • 字符串:是以空字符(\o)结尾的char数组。
字符串常量
  • 如果字符串常量中间没有间隔或者间隔的是空格符,ANSI C会将其串联起来;
  • 如果要在字符串中使用双引号,在双引号前加一个反斜线符号;
  • 字符串常量属于静态存储类。(静态存储:如果一个函数中使用字符串常量,即使是多次调用了这个函数,该字符串在程序的整个运行过程中只存储一份。)
  • 整个引号中内容作为指向该字符串存储位置的指针。其值为字符串中第一个字符。
#include <stdio.h>
#define _CRT_SECURE_NO_WARNINGS
int main(void)
{
	printf("%s,%p,%c", "we", "are", *"space farers");
	return 0;
}

结果:we,00927B30,s

字符串数组(利用指针)
const char *mytal[5]={"add number swiftly","hello tom","stashing data","following letter","understanding the c language"};

char *pr="I love you";

这个数组实际存储的是地址,第一个指针是mytal[0]…而*mytal[0]=a。这样利用指针,可以不浪费存储空间。其等于char mytal[5][81]

字符串输入

gets()
  • 由于读取时字符串没有预定的长度,多以根据换行符得知读取结束。
  • 返回值:返回一个指向char的指针。
  • 如果读取错误或者gets()遇到文件结尾,它就返回空地址。while(gets(name)!=NULL)
  • 不足:它不检查预留存储区是否能够容纳实际输入的数据,多出来的字符简单地溢出当相邻的内存区。
fgets(a,b,c)
  • a:读取内容的变量;b:最大读取字符数(有\0),可读取换行符;c:读哪个文件(在键盘读取时,使用stdin);
scanf()

字符串输出

puts()
fputs(a,b)
  • 面向文件。(第二个参数,若输出显示,可以使用stdout)
  • 不为输出自动添加换行符。
printf()

自定义字符串输入/输出函数

  • 在getchar()和putchar()的基础上。

常用字符串函数

  • strlen():得到字符串的长度;
  • strcat(a,b)=a+b:接受两个字符串参数,将第二个字符串的一份拷贝添加到第一个字符串的结尾,从而使第一个字符串成为一个新的组合字符串。
  • strncat(a,b,n)=a+b的前n个字符:n指定最多允许添加的字符数目。
  • strcmp(a,b):比较a,b是否相同,相同就返回0。直接使用while(strcmp(a,b))就可。直接比较到字符串结尾处。
  • strncmp(a,b,n):可以比较到字符串不同处,也可以比较完由第三个参数指定的字符数。
  • strcpy(a,b)==a=b
  • strncyp(a,b,n):第三个参数来指明最大可复制的字符数。
  • sprintf():作用和printf()一样,但是它写道字符串里而不是写到输出显示中。如sprintf(formal,"%s,%19s:%6.2f\n",last,first,prize);和printf一样,就是把结果字符串存放到formal中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值