c语言中string用法

admin 22 0

### C语言中字符串(string)的基本用法

在C语言中,字符串并不是一种基本数据类型,而是由字符数组(character array)来表示的,这意味着字符串实际上是一组以空字符(null character,即'\0')结尾的字符序列,了解这一点对于正确使用C语言中的字符串至关重要。

#### 1. 字符串的声明与初始化

在C语言中,你可以使用字符数组来声明和初始化字符串。

```c

char greeting[14] = "Hello, World!";

这里,`greeting`是一个字符数组,可以存储14个字符(包括末尾的空字符)。注意,字符串字面量(如"Hello, World!")在内存中会自动添加一个空字符作为结尾,所以数组的大小需要比字符串的实际字符数多1。

#### 2. 字符串的输入与输出

在C语言中,你可以使用`printf`函数来输出字符串,使用`scanf`函数来输入字符串。但是,由于`scanf`函数在读取字符串时不会读取空格,所以通常使用`fgets`函数来读取包含空格的字符串。

**输出字符串**:


```c
#include <stdio.h>

int main() {
    char greeting[14] = "Hello, World!";
    printf("%s\n", greeting);
    return 0;
}

**输入字符串**:

#include

int main() {

char input[100];

printf("Enter a string: ");

fgets(input, sizeof(input), stdin); // 读取包含空格的字符串

printf("You entered: %s", input);

return 0;

}

注意:`fgets`函数会读取换行符('\n')并将其存储在字符串中,所以如果你不想在输出时看到换行符,可以使用`strcspn`函数或手动替换掉它。

#### 3. 字符串操作函数

C语言标准库提供了一系列用于操作字符串的函数,这些函数定义在`string.h`头文件中。以下是一些常用的字符串操作函数:

* `strlen(str)`: 返回字符串`str`的长度(不包括末尾的空字符)。
* `strcpy(dest, src)`: 将字符串`src`复制到字符串`dest`。注意,`dest`必须有足够的空间来存储`src`(包括末尾的空字符)。
* `strcat(dest, src)`: 将字符串`src`追加到字符串`dest`的末尾。同样,`dest`必须有足够的空间来存储追加后的结果。
* `strcmp(str1, str2)`: 比较两个字符串`str1`和`str2`。如果`str1`小于`str2`,则返回负数;如果`str1`等于`str2`,则返回0;如果`str1`大于`str2`,则返回正数。
* `strstr(str1, str2)`: 在字符串`str1`中查找字符串`str2`的第一次出现。如果找到,则返回指向该位置的指针;否则返回NULL。

以下是一个使用这些函数的示例:


```c
#include <stdio.h>
#include <string.h>

int main() {
    char str1[50] = "Hello, World!";
    char str2[20] = "World";
    char result[70];

    printf("Length of str1: %zu\n", strlen(str1)); // 输出字符串长度

    strcpy(result, str1); // 复制字符串
    printf("Copied string: %s\n", result);

    strcat(result, " again!"); // 追加字符串
    printf("Concatenated string: %s\n", result);

    if (strcmp(str1, str2) == 0) {
        printf("str1 and str2 are equal.\n");
    } else {
        printf("str1 and str2 are not equal.\n");
    }

    char *pos = strstr(str1, str2); // 查找子字符串
    if (pos) {
        printf("Found '%s' in '%s' at position: %ld\n", str2, str1, pos - str1);
    } else {
        printf("'%s' not found in '%s'.\n", str2, str1);
    }

    return 0;
}

这个示例展示了如何使用C语言标准库中的字符串操作函数来执行各种常见的字符串操作。