C语言——字符数组

  在C语言编程中,我们一般用一个字符数组来存放一个字符串。例如,我们想存储这个字符串“http://i.cnblogs.com”,这个字符串一共有20个字符,要存放下这个字符串,我们需要一个长度为21的字符数组。为什么是21个而不是20个呢?在C语言中,字符串数组默认以‘\0‘结尾,所以我们一共需要一个长度为21的字符数组来存储这个变量。

  unsigned char text[21] = “http://i.cnblogs.com”;

  既然我们已经知道了如何存放一个字符串,那下面我们来讨论另外几个问题。首先,已知一个字符数组存放了一个字符串,如何求解这个字符串有多长呢?解决这个问题还要从字符串的存储原理入手。在前文中,我们已知了存储字符串末尾的字符为‘\0‘,那么我们就可以利用循环来扫描这个字符数组,以扫描到‘\0‘为结束标志,从而求解出字符串的长度。

  unsigned char get_text_length(unsigned char *sp)

  {

    unsigned char text_length=0;

    while(*sp)            /*判断字符是否为‘\0‘*/

    {

      text_length++;        

      *sp++;            /*指向数组的下一位*/

    }

    return text_length;

  }

  此外,关于字符数组的初始化问题,我们除了可以在申明字符的数组的同时利用双引号将字符串直接赋值外,是否还有其他方法呢?

  方法一:

  unsigned char text[] = "www.google.com";

  方法二:

  unsigned char text[20];

  strcpy(text, "www.google.com");

  注意,方法二中调用了系统函数strcpy(),该函数在string.h中定义了。

C语言——字符数组,布布扣,bubuko.com

时间: 2024-10-03 21:41:31

C语言——字符数组的相关文章

C语言字符数组的定义与初始化

C 语言字符数组的定义与初始化 1.字符数组的定义与初始化字符数组的初始化,最容易理解的方式就是逐个字符赋给数组中各元素.char str[10]={ 'I',' ','a','m',' ',‘h’,'a','p','p','y'};即把10个字符分别赋给str[0]到str[9]10个元素如果花括号中提供的字符个数大于数组长度,则按语法错误处理:若小于数组长度,则只将这些字符数组中前面那些元素,其余的元素自动定为空字符(即'\0' ).2.字符数组与字符串在c 语言中,将字符串作为字符数组来处

c语言字符数组的初始化问题

1.字符数组的定义与初始化 字符数组的初始化,最容易理解的方式就是逐个字符赋给数组中各元素. char str[10]={ 'I',' ','a','m',' ',‘h’,'a','p','p','y'}; 即把10个字符分别赋给str[0]到str[9]10个元素 如果花括号中提供的字符个数大于数组长度,则按语法错误处理: 若小于数组 长度,则只将这些字符数组中前面那些元素,其余的元素自动定为空字符(即 '\0' ). 2.字符数组与字符串 在c 语言中,将字符串作为字符数组来处理.(c++中

[c语言]字符数组、字符串定义

C语言中字符串通常用字符指针和字符数组来定义: char* pS="abcdef"; char s[]="abcdef"; 这两种方式都会在结尾为字符串隐式补结束符'\0' 使得 strlen(pS); strlen(s); //均为6,未计算带'\0'的长度,拷贝字符串时,真实容量应+1: 若使用sizeof可以看到 sizeof(s)/sizeof(char);//这个值为7 所以在使用strncpy时切记strlen+1: 另,printf和strcpy等均以

c语言字符数组与字符串的使用详解

转自:http://www.jb51.net/article/37456.htm 1.字符数组的定义与初始化字符数组的初始化,最容易理解的方式就是逐个字符赋给数组中各元素.char str[10]={ 'I',' ','a','m',' ',‘h','a','p','p','y'};即把10个字符分别赋给str[0]到str[9]10个元素如果花括号中提供的字符个数大于数组长度,则按语法错误处理:若小于数组长度,则只将这些字符数组中前面那些元素,其余的元素自动定为空字符(即 '\0' ). 2.

c语言字符数组和指针的经典用法

1.字符数组 许多情况下,对字符串的处理使用字符数组会更加方便,比如: 我觉得不改变字符串的原有顺序,对字符串进行删除等操作时,使用字符数组效果会更好. eg:给定字符串(ASCII码0-255)数组,请在不开辟额外空间的情况下删除开始和结尾处的空格,并将中间的多个连续的空格合并成一个.例如:"   i    am a      little boy.    ",变成"i am a little boy",语言不限,但不要用伪代码作答. answer: #inclu

C语言-字符数组和字符串

1:概念 用来存放字符的数组成为字符数组. 例如: char a[10]={'a','b','c','d','e','f','j','g','f','k'};// [注意]在C语言中没有字符串,所以用字符数组来存放字符串. 例如: char a[30]={"shisihuansheng.blog"}; char a[30]="shisihuansheng.blog";//这个写法更为简洁,方便,开发时候经常使用. a[0]=s;a[1]=h 依次类推. 在C语言中,

C语言字符数组与字符串

5.5.1 字符数组与字符串区别 l  C语言中没有字符串这种数据类型,可以通过char的数组来替代: l  字符串一定是一个char的数组,但char的数组未必是字符串: l  数字0(和字符'\0'等价)结尾的char数组就是一个字符串,但如果char数组没有以数字0结尾,那么就不是一个字符串,只是普通字符数组,所以字符串是一种特殊的char的数组. 1 #include <stdio.h> 2 3 4 5 int main() 6 7 { 8 9 char c1[] = { 'c', '

windows下查看C语言字符数组(俗称:字符串)在内存中地址信息的操作过程

#include <stdio.h> #pragma warning(disable:4996) int power10(int n) { if (n == 0) { return 1; } int val = 10; for (int i = 1; i < n; i++) { val *= 10; } return val; } 在开发平台vs2013下面,选择调试->窗口->内存->内存1 1 int main(int arg, char *args[]) 2 {

C语言字符数组回顾

赋值篇: Part1      错误引例*2: 1 char c6[];//WRONG 2 c6="HELLO";//WRONG 3 4 char c7[];//WRONG 5 c7[0]='H';//WRONG 6 c7[1]='E';//WRONG 7 c7[2]='L';//WRONG 8 c7[3]='L';//WRONG 9 c7[4]='O';//WRONG 1.不允许声明之后才对整个字符数组进行赋值,比如c6 2.除非声明时顺便赋值了,否则不允许不声明数组长度,比如c7