跳转到内容

C 语言字符串输入输出

来自代码酷

C语言字符串输入输出[编辑 | 编辑源代码]

介绍[编辑 | 编辑源代码]

在C语言中,字符串是由字符组成的数组,以空字符('\0')作为结束标志。字符串的输入输出是编程中的基础操作,涉及多种函数和方法。本章将详细介绍如何在C语言中读取和输出字符串,包括标准库函数的使用、注意事项以及常见错误。

字符串基础[编辑 | 编辑源代码]

C语言中的字符串本质上是字符数组。例如:

char str[10] = "Hello"; // 字符串"Hello"存储在字符数组中

字符串以空字符('\0')结尾,因此数组长度必须至少比字符串长度多1。

字符串输出[编辑 | 编辑源代码]

C语言提供了多种输出字符串的函数,最常用的是printfputs

使用printf函数[编辑 | 编辑源代码]

#include <stdio.h>

int main() {
    char str[] = "Hello, World!";
    printf("字符串: %s\n", str); // 使用%s格式说明符输出字符串
    return 0;
}

输出:

字符串: Hello, World!

使用puts函数[编辑 | 编辑源代码]

puts函数会自动在输出后添加换行符。

#include <stdio.h>

int main() {
    char str[] = "Hello, World!";
    puts(str); // 输出字符串并换行
    return 0;
}

输出:

Hello, World!

字符串输入[编辑 | 编辑源代码]

C语言提供了多种输入字符串的函数,包括scanfgetsfgets

使用scanf函数[编辑 | 编辑源代码]

scanf函数可以使用%s格式说明符读取字符串,但会忽略空白字符(如空格、制表符)。

#include <stdio.h>

int main() {
    char str[20];
    printf("请输入字符串: ");
    scanf("%s", str); // 读取字符串(遇到空格停止)
    printf("输入的字符串: %s\n", str);
    return 0;
}

输入:

请输入字符串: C Programming

输出:

输入的字符串: C

注意:scanf在遇到空格时会停止读取,因此只读取了"C"。

使用gets函数(不推荐)[编辑 | 编辑源代码]

gets函数可以读取一行字符串(包括空格),但不检查数组边界,可能导致缓冲区溢出。

#include <stdio.h>

int main() {
    char str[20];
    printf("请输入字符串: ");
    gets(str); // 读取一行(不安全)
    printf("输入的字符串: %s\n", str);
    return 0;
}

输入:

请输入字符串: C Programming

输出:

输入的字符串: C Programming

注意:gets函数已被弃用,建议使用fgets代替。

使用fgets函数(推荐)[编辑 | 编辑源代码]

fgets函数更安全,可以指定最大读取长度。

#include <stdio.h>

int main() {
    char str[20];
    printf("请输入字符串: ");
    fgets(str, sizeof(str), stdin); // 安全读取一行
    printf("输入的字符串: %s", str);
    return 0;
}

输入:

请输入字符串: C Programming

输出:

输入的字符串: C Programming

注意:fgets会保留换行符(如果输入未超出缓冲区)。

常见问题与注意事项[编辑 | 编辑源代码]

1. 缓冲区溢出:使用scanf或gets时,如果输入超出数组长度,会导致未定义行为。 2. 换行符处理:fgets会保留换行符,可能需要手动去除。 3. 空字符:确保字符串以'\0'结尾,否则可能导致输出错误。

实际案例[编辑 | 编辑源代码]

以下是一个完整的程序,演示如何安全地读取和输出字符串:

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

int main() {
    char name[50];
    printf("请输入您的名字: ");
    fgets(name, sizeof(name), stdin);

    // 去除换行符
    name[strcspn(name, "\n")] = '\0';

    printf("您好, %s!\n", name);
    return 0;
}

输入:

请输入您的名字: Alice

输出:

您好, Alice!

总结[编辑 | 编辑源代码]

  • 使用printf和puts输出字符串。
  • 使用fgets安全地输入字符串,避免使用gets。
  • 注意缓冲区溢出和换行符处理。

通过掌握这些函数和技巧,您可以高效地处理C语言中的字符串输入输出操作。