六、字符数组

本文深入讲解了字符数组的概念、初始化、输入输出方法,以及string家族函数如strcpy、strlen和strcmp的使用。还涉及了仿写strlen和strcmp的实例,以及预习指针的应用。适合初学者理解字符串操作和指针在信息技术中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

【1】字符数组

1.概念:

存储字符的数组称为字符数组
字符串的结束标志是’\0’
"abc"实际存储’a’‘b’‘c’‘\0’

2.字符数组初始化方式:
	char s[10] = {"hello"};
	char s[10] = "hello";
	char s[10] = {'h','e','l','l','o'};
	char string[] = "hello"; //数组的大小根据初始化时实际使用的空间来开辟 
	//sizeof(string) = 6           
	char s[];  //数组不支持动态开辟,在执行程序时数组大小未知,因此编译即报错。
3.字符数组的输入输出
1.输入:
  char s[32] = {0};
  1)scanf("%s",s);
  //输入的字符串不能包含空格,因为空格是scanf输入结束的标志。
  2)
     for(i=0;i<10;i++)
     {
        scanf("%c",&s[i]);
     }                     
  //必须要严格按照循环规定的输入次数输入字符
  3)字符串专用输入函数
    gets
	#include <stdio.h>
    char *gets(char *s);
    功能:从终端获取一串字符
	参数:目标字符数组的首地址
	返回值:同参数
	//gets在输入时不关心数组越界问题
2.输出
  char s[32] = {0};
  1)printf("%s\n",s);
  2)如果需要遍历字符数组中的每一个元素时,采用循环输出。
  for(i=0;i<10;i++)
  {
     printf("%c",s[i]);
  }   
  //严格按照循环规定的输出次数输出字符
  3)字符串专用输出函数
    puts
	int puts(const char *s);
    功能:向终端输出一串字符
    参数:const char *s 目标字符串的首地址
	返回值:
    //输出字符串时截止到'\0'
    //puts("")  //输出换行
  char s[10] = {0};
  s[10] = "hello";  //报错!!s[10]指的是下标为10的元素,而且这个元素不属于该数组。
  s = "hello"; //错误!!s是数组首地址,地址是常量不能被赋值。
  strcpy(s,"hello");  //正确
  printf("%s\n",s);

【2】string家族函数

​ #include <string.h>

1.strcpy

​ char *strcpy(char *dest, const char *src);
​ 功能:实现字符串复制 //默认包含’\0’
参数:char *dest 目标字符数组的首地址
​ const char *src 源字符数组的首地址
​ 返回值:目标字符数组的首地址
​ *char strncpy(char *dest, const char *src, size_t n);
​ //指定字符个数的复制
​ size_t n //要复制的字符个数
​ //一般用于对未初始化的字符数组进行赋值。
//在代码里写的字符串常量就代表只读区的地址

2.strlen

size_t strlen(const char *s);
功能:计算字符数组中字符串的实际长度
参数:要计算的字符数组首地址
返回值:字符个数

  面试题:strlen和sizeof的区别?  
  1.sizeof和strlen本质不同,sizeof是个关键字,而strlen是个函数。
  2.sizeof计算的是字符数组占用内存的大小,而strlen计算的是字符数组中实际存储的字符串的长度。
3.strcat

char *strcat(char *dest, const char *src);
功能:用于字符串拼接
参数:char *dest目标字符数组首地址 const char *src源字符数组首地址
返回值:目标字符数组首地址
char *strncat(char *dest, const char *src, size_t n);
//指定字符个数的拼接

4.strcmp

int strcmp(const char *s1, const char *s2);
功能:用于字符串比较(比较两个字符串的ascii)
参数:要比较的两个字符串的首地址
返回值: s1 > s2 1
s1 < s2 -1
s1 = s2 0
int strncmp(const char *s1, const char *s2, size_t n);
//指定字符个数比较

作业:1.仿写strlen的功能
从终端获取一串字符,计算并打印字符串的实际长度。
2.仿写strcmp的功能
从终端获取两个字符串s1和s2,比较之后输出结果。
3. 预习指针,尝试用指针实现这两个作业题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值