C字符串总结
字符数组和字符串
&字符数组和字符串的概念 &字符数组的初始化
&字符串的输入输出 &综合举例
字符数组和字符串的概念
字符数组是元素类型为字符的数组 ,它既具有普通数组的一般性质 ,又具有某些特殊性质。
字符串常量是用双引号包围的字符序列。存储字符串常量时,系统会在字符序列后自动加上 '\0',标志字符串的结束。字符串的长度定义为字符串中的有效字符数,不包括结束标志 '\0'和双引号。 (字符串常量是不能被修改的,如:char *p="hello";p[0]='x'; 是会发生内存错误的)
字符串变量是以 '\0'作为结束标志的字符数组。字符串变量用于存储和处理字符串常量。在书中统称为字符串的,既可能是字符串常量也可能是存储了字符串常量的字符串变量,即特殊的字符数组。
字符数组有两种用法 :一是当作字符的数组来使用。这时的用法与整数的数组、 实数的数组等相同,对字符数组的输入、输出、赋值、引用等都是针对单个的元素进行。二是更为重要的用法即存储、处理字符串。这时它除了可以像普通数组一样使用外,还可以把字符串作为一个整体进行操作。
字符数组的初始化
(1)用字符对字符数组初始化 这时把字符数组当作普通数组看待 , 产生的数组不会有结束符 '\0'。当数据量很大时,使用这种方法的工作量是繁重的。
例: char rat[5]={'H','E','L','L','O'};
(2)用字符串常量对字符数组初始化 ,这时把字符数组当作字符串变量看待。
例: char panic[6]={"HELLO");
这时存放在数组 panic中的字符除了 H,E,L,L,O之外还有结束标志 '\0',因此与下面的初始化等价:
char panic[6]={'H','E','L','L','O'};
注意 : 第二个说明语句中有 6 个字符 , 因此字符数组 panic 的长度是 6, 而字符串 "HELLO"的长度却是 5,不把 '\0'计算在内。
C语言也允许在用字符串初始化时省略花括号。
char panic[]="HELLO";
如果在说明语句中指定了数组的长度,那么其大小不得小于初始化字符串的长度。多余的元素位置被系统自动初始化为
相关文档:
char *strcpy(char *strDes, const char *strSrc)
{
assert((strDes != NULL) && (strSrc != NULL));
char *address = strDes;
while ((*strDes + ......
C/C++关键字static,const,inline,define,typedef
document.body.oncopy = function() {
if (window.clipboardData) {
setTimeout(function() {
......
今天第一次试着在Linux下写C程序,把遇到的问题记录一下
1. 使用emacs命令编辑程序文件,我直接在Terminal里输入了emacs,写好程序,关闭,结果和windows里不一样,并没有任何SaveFileDialog之类的对话框弹出来,自己写的东西也不知道保存到哪里了,而且File菜单里也没有New这样的选项。后来才知道,原来是得在emacs命令后 ......
精短高效的XML解析器,纯C单一程序,应用于银行的国税库行横向联网接口系统中,稳定可靠,运行速度飞快,非相应的JAVA程序可比.以下为大部分源码:
/* Copyright (c) 2005 wzs */
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <time.h>
#include <varargs.h>
#i ......
CRT原先是指Microsoft开发的C Runtime Library,用于操作系统的开发及运行。后来在此基础上开发了C++
Runtime Library,所以现在CRT是指Microsoft开发的C/C++ Runtime
Library。在VC的CRT/SRC目录下,可以看到CRT的源码,不仅有C的,也有C++的。
CRT原先的目的就是支持操作系统的 ......