C语言-输入输出函数

//string.c 字符串函数
 1.strlen()函数-统计字符串长度;
  返回值为 unsigned int;
  char *string;
  strlen(string);

 2.strcat()函数-拼接两个字符串,类型char *;
  char *strcat(char *restrict s1,const char *restrict s2);
  该函数把s2指向的字符串拷贝至s1指向的字符串末尾。s2字符串
  的第一个字符将覆盖s1字符串末尾的空字符,该函数返回s1。
  char flower[10] = "Rose";
  char addon[] = "s smell like old shose."
  strcat(flower,addon);
  缺点:无法检查第一个数组能否容纳第二个数组;

 3.strncat()函数-strcat()升级版;
  char *strncat(char *restrict s1,const char *restrict s2,size_t n);
  该函数把s2指向的字符串的n个字符拷贝至s1指向的字符串末尾。s2字符串
  的第一个字符将覆盖s1字符串末尾的空字符,不会拷贝s2字符串中空字符和
  后面的字符,并在拷贝字符的末尾添加一个空字符,该函数返回s1。
  char flower[10] = "Rose";
  char addon[] = "s smell like old shose."
  int size = 13;
  strncat(flower,addon,size);//size指定了最大添加参数;
  在加入第13个字符或遇到'\0'时停止;

 4.strcmp()函数-俩字符串作比较;
  int strcmp(const char *s1,const char *2);
  若俩字符串参数相同,函数返回0,
  否则返回非零值;若比较的字符串不同:
  strcmp("A","A") is 0
  strcmp("A","B") is -1
  strcmp("B","A") is 1
  strcmp("Z","a") is -1
  strcmp("apples","apple") is 1
  在字母表第一个字符串位于第二个字符串前面,返回负数;
  反之,返回正数:(根据ASCII比较)
  #define answer "Grant"
  char try[size] = "Grant";
  strcmp(answer,try);

 5.strncmp()函数-可以比较第三个参数指定的字符数;
  int strncmp(const char *s1,const char *s2,size_t n);
  在比较n个字符后或者遇到'\0'停止比较。
  const char *list = {"astronomy"};
  strncmp(list,"astro",5)//只比较前五个字符;

 6.strcpy()函数-拷贝字符串(包括空字符);
  char *strcpy(char *restrict s1,const char *restrict s2);
  返回类型为char *,第一个字符的地址s1;
  char target[20];
  strcpy(target,"Hi ho!");
  缺点:不能检查目标空间是否容纳源字符串的副本;

 7.strncpy()函数-更谨慎的选择;
  char *strncpy(char *restrict s1,const char *restrict s2,size_t n);
  返回类型为char *,第一个字符的地址s1;第三个参数指明可拷贝的最大字符数;
  该函数不会拷贝空字符后面的字符,若源字符串的字符少于n个,目标字符串就
  以拷贝的空字符结尾。若源字符串>=n个,不拷贝空字符。
  char target[20];
  strcpy(target,"Hi ho!",2);

 8.strpbrk()函数
  char *strpbrk(const char *s1,const char *s2);
  若s1字符中包含s2字符串中的任意字符,该函数返
  回指向s1字符串首地址的指针;若在s1中为找到s2
  中的字符,则返回空字符。

 9.strrchr()函数
  char *strrchr(const char *s,int c);
  该函数返回s字符串中c字符的最后一次出现的位置
  (末尾的空字符也是字符串的一部分,所以在查找
  范围内)。若没找到c字符返回空指针。

 10.size_t strlen()函数
  size_t strlen(const char *s);
  该函数返回s字符串中的字符数,不包括末尾的空字符。

 11.strstr()函数
  char *strstr(const char *s1,const char *s2);
  该函数返回指向s1字符串中s2字符串出现的首位置。
  如果在s1中没有找到s2,返回空指针。

//字符串输入输出
 1.gets()函数-读取整行输入,直到遇到换行符;
  char *gets(char *str);
  然后丢弃换行符,储存其与字符,并在末尾+'\0';
  若读到文件结尾会返回空指针
  缺点:无法检查数组是否能装得下输入行。
  eg:读取一行输入,打印一行该输入。
  char line[81];
  while (gets(line)) //与while (gets(line) != NULL)相同
     put(gets);

 2.缓冲区溢出:多于的字符超出了指定的目标空间。
  若这些多于字符只是占用了尚未使用的内存,就不会立即
  出现问题,若它们擦写掉程序中其他数据,会导致程序异常中止。

 3.puts()函数-显示字符串,并在末尾添加换行符;
  int puts(const char *str);
  执行成功返回非负数,执行失败返回EOF;

 4.fgets()函数-显示字符串,
  char *fegets(char *str,int n,FILE *stream);
  从指定的流stream读取一行,存储在str所指向的
  字符串内,当读取(n-1)个字符,或'\n'亦或到达
  文件末尾停止。
  返回地址与传入的第一个参数相同,但若读到文件
  末尾或读取错误,返回空指针。

 5.fputs()函数-向指定文件写入一个字符串;
  不自动写入字符串结束标记'\0',成功写入一个字符串后,
  文件的位置指针自动后移,函数返回值为非负整数;否则返回EOF。
  fputs()会保留输入中的换行符。
  int fuputs(char *string,FILE *stream);
  eg:读取一行输入,打印一行该输入。
  char line[81];
  while (fgets(line,81,stdin))
     fputs(line,stdout);
 
 6.空字符与空指针
      空字符('\0'):标记c字符串末尾的字符,对应字符
  编码是0;由于其他字符的编码不可能是0,所以不可能
  是字符串的一部分。
      空指针(NULL)有一个值,该值不会与任何数据的有效
  对应。通常,函数使用它返回一个有效地址表示某些特殊
  情况发生,例如遇到文件末尾或者未能按期执行。
      空字符是整数类型,占1字节;空指针是一个地址,通
  常占4字节。

 7.gets_s()函数
  char *gets_s(char *str,int n);
  gets_s()只从标准输入中读取数据;
  gets_s()读到换行符,会丢弃它不储存它;
  gets_s()读到最大字符数都没有读到换行符,会执行
  以下几步。首先把目标数组中是首字符设置为空字符,
  读取并丢弃随后的输入直到读到换行符或文件末尾,
  然后返回空指针。接着,调用依赖实现的“处理函数”,
  可能会中止或退出程序。

 8.scanf()函数
  int scanf(const char *restrict format,...);
  scanf()返回成功读入的数据项数,读入数据时
  遇到“文件结束”则返回EOF。

 9.printf()函数
  int printf(char *format...);
  printf()返回值为实际控制输出的字符数。
//其他
sizeof()函数;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值