程序设计C语言(3)

字符串

  • C语言没有 “字符串”数据类型, 使用字符数组或字符指针进行操作
  • 一维字符数组和单个字符串
    • 长度为 n 的字符数组最多可以存放n-1个字符
    • 初始化:
      char string[10] = {‘h’, ‘i’, ‘\0’};
      char str[10] = { “hi” }; char str[10] = “hi” ;
      char str[] = { “hi” }; char str[] = “hi” ; 注:未指定长度,自动匹配,内存实际分配空间多一个单位
char str[10]; str = "I like C"; X错误语句:str为地址常量,不能操作
  • 二维字符数组和多个字符串
    • 初始化: 行数可以省略
      char s[3][10]={{“Pascal”},{“Java”},{“Python”}};
      char s[3][10]={“Pascal”,“Java”,“Python”};
  • 字符指针
    • 字符指针:定义时必须初始化
  • 字符的输入输出:
    • getchar()接受单个字符放入缓冲区,键入回车ENTER才给程序使用,返回值为ASCII整数值。
    • putchar()输出单个字符变量。putchar('a'); putchar(97); 都是输出字符a
  • 字符串的输入输出
    • 使用 %c + 循环,%s 利用scanf()、printf()
      • scanf()会将空格作为分隔符
    • 使用专门函数:
      • char *gets(char *s); 从键盘输入一个字符串,输入参数为字符指针或字符数组名,返回值为指向char类型的指针,即返回一个字符串的首地址。输入的字符串可以包含空格、TAB,回车为终止符。
      • int puts(char *s); 将一个字符串输出到终端,执行成功返回非负整数 (注意:相对于ptintf() 速度更快,占用内存更小,自动换行)
  • 字符串操作函数 <string.h>
    • 求长度:int strlen (char *s);
      在这里插入图片描述
      注意:字符数组或字符指针做函数参数时,只传字符串首地址,不传长度;数值型数组或指针做参数时,既要传首地址也要传长度。
    • 复制函数:char *strcpy(char *dest, char *src);在这里插入图片描述
      注意:dest长度 ≥ src长度char str1[30]="abcde"; 或 char str1[30]; strcpy(str1,"abcde");
    • 连接函数:char *strcat(char *dest, char *src);
      在这里插入图片描述
      注意:dest不能为字符串常量,例如strcat(“123”,“456”)错误;不能自己连接自己,缺失结束符!
    • 比较函数:int strcmp(char *s1 ,char *s2);
      在这里插入图片描述
      注意:不能使用 " == "来比较字符串
  • 字符串类型与数值类型转换 <stdlib.h>
    • void itoa(int n , char s[] ,int radix); 将整数转换为指定进制的字符串 , radix:2~36
    • int atoi(char *nptr);将字符串转换为整数
    • long atol(char *nptr);将字符串转换为长整数
    • double atof(char *nptr);将字符串转换为浮点数
  • 其他函数
    • 查找:char *strstr(char *s1,char *s2); 成功:返回地址指针;失败:返回NULL
      在这里插入图片描述

    内存分配 <stdlib.h>

    • 静态内存分配:程序代码编译时,进行内存分配
    • 动态内存分配:程序执行时,进行内存分配回收,成对使用 void *malloc (unsigned size); void free(void *ptr);
      在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值