字符和字符串函数

1 gets(),puts()

gets() 函数读取整行输入,直至遇到换行符,然后丢弃换行符,替换为‘\0’使其成为一个C字符串
puts() 函数对字符串输出并输出换行符,在遇到空字符时停止输出,否则会一直输出

char ar[100];
gets(ar);//c11 标准已经废除了gets() 因为gets()的不安全性
puts(ar);//
2 fgets(),fputs()

char * fgets ( char * str, int num, FILE * stream );//第二个限定字符串长度,防止溢出,第三个指出要读取的文件。
fgets() 在读取num-1 的字符或者遇到换行符时停止,并且将换行符保留在字符串中//所以如果用
strlen() 函数确定字符串的长度,会将换行符算进去
fputs() 直接输出字符串,不加换行符,需要指定输入到何处

char ar[100];
fgets(ar,100,stdin);
puts(ar,stdout);

while(fgets(ar,100,stdin) != 0)// 当fgets() 读取到文件末尾时停止读取并返回NULL
 puts(ar,stdout);
3 sprinf() 函数

将数据输入到字符串中,而不是打印在显示屏上

char ar[100];
sprintf(ar,"%d %lf",10,10.1);
printf("%s",ar);//10 10.100000
4 常用的字符串C函数
// 复制
char *strcpy(char * s1,cosnt char  *s2);
char *strncpy(char *s1,cosnt char *s2,size_t n);
//连接
char *strcat(char *s1,const char *s2);
char *strncat(char *s1,const char *s2,size_t n);
// 比较
char *strcmp(const char *s1,cosnt char *s2);
//如果相等返回零,s1 > s2 ,返回正值,反之亦然
// 查找
char *strchr(cosnt char *s,int c);//如果找到,返回位置指针,否则返回NULL
char *strpbrk(const char *s1,cosnt char *s2); 
//如果s1 字符包含s2 字符串出现的任意字符,
//返回只想是字符串首字母的指针; 否则返回NULL
char *strrchar(const char *s,int c);
// 返回最后一次出现c的位置指针,如果没有找到,返回空
char *strstr(cosnt char *s1,const char *s2)
// 返回指向s1 字符串中s2 出现的位置,否则返回空指针
size_t strlen(const char *s) //返回字符串的长度
5 将字符串转换为数字atoi,atof,atol

atoi 将字符串转换成 int 类型的数据
atof 将字符串转换成double 型的数据
atol 将字符串转换成long 型的数据
atoll

char ar[100] = "100";
int n= atoi(ar);
printf("%d",n);//100

加强版
strtol() string - > long
strtoul() string -> unsigned long
strtod() string - > double
strtoll()

long strtol(const char *s,char **p,int base);

#include <stdio.h> /* printf */
#include <stdlib.h> /* strtol */

int main ()
{
  char szNumbers[] = "2001 60c0c0 -1101110100110100100000 0x6fffff";
  char * pEnd;
  long int li1, li2, li3, li4;
  li1 = strtol (szNumbers,&pEnd,10);
  li2 = strtol (pEnd,&pEnd,16);
  li3 = strtol (pEnd,&pEnd,2);
  li4 = strtol (pEnd,NULL,0);
  printf ("The decimal equivalents are: %ld, %ld, %ld and %ld.\n",
   li1, li2, li3, li4);
  return 0;
}

output

The decimal equivalents are: 2001, 6340800, -3624224 and 7340031