位置:首页 > > C语言字符串

C语言字符串

C语言编程中的字符串实际上是一个一维是由一个空字符'\0'终止的字符数组。因此,一个空值终止字符串包含包括字符串后跟空(null)字符。

下面的声明和初始化创建由单词“Hello”的字符串。要在数组的末尾加上空(null)字符,包含字符串的字符数组的大小,实际比在单词“Hello”的数量多了一个。

char greeting[6] = {'H', 'e', 'l', 'l', 'o', '\0'};

如果按照数组初始化的规则,那么可以写上述声明如下:

char greeting[] = "Hello";

以下是上述定义串的在存储器演示在 C/C++:

其实,不需要放置空(null)字符在字符串常量的结尾。 C语言编译器自动将'\0'放在字符串的结尾,当它初始化数组。让我们尝试打印提到上面的字符串:


#include 

int main ()
{
   char greeting[6] = {'H', 'e', 'l', 'l', 'o', '\0'};

   printf("Greeting message: %s", greeting );

   return 0;
}


当上述代码被编译和执行时,它会产生一些结果如下:

Greeting message: Hello

C语言支持多种用来操作空值终止字符串的函数:

S.N. 函数及用途
1 strcpy(s1, s2);
复制字符串s2到字符串s1
2 strcat(s1, s2);
连接字符串s2到字符串s1的末尾
3 strlen(s1);
返回字符串s1的长度
4 strcmp(s1, s2);
返回值为0,s1和s2是相同的; 如果s1 s2大于0
5 strchr(s1, ch);
返回一个指针,指向字符串s1中第一次出现字符ch位置
6 strstr(s1, s2);
返回一个指针,指向字符串s1中第一次出现的字符串s2位置

下面的例子是利用小部分上述函数功能:


#include 
#include 

int main ()
{
   char str1[12] = "Hello";
   char str2[12] = "World";
   char str3[12];
   int  len ;

   /* copy str1 into str3 */
   strcpy(str3, str1);
   printf("strcpy( str3, str1) :  %s", str3 );

   /* concatenates str1 and str2 */
   strcat( str1, str2);
   printf("strcat( str1, str2):   %s", str1 );

   /* total lenghth of str1 after concatenation */
   len = strlen(str1);
   printf("strlen(str1) :  %d", len );

   return 0;
}


当上述代码被编译和执行时,它会产生一些结果如下:

strcpy( str3, str1) :  Hello
strcat( str1, str2):   HelloWorld
strlen(str1) :  10


可以找到C语言字符串相关的函数在C语言标准库的完整列表