跳转到内容
主菜单
主菜单
移至侧栏
隐藏
导航
首页
最近更改
随机页面
MediaWiki帮助
代码酷
搜索
搜索
中文(中国大陆)
外观
创建账号
登录
个人工具
创建账号
登录
未登录编辑者的页面
了解详情
贡献
讨论
编辑“︁
C 语言字符串输入输出
”︁
页面
讨论
大陆简体
阅读
编辑
编辑源代码
查看历史
工具
工具
移至侧栏
隐藏
操作
阅读
编辑
编辑源代码
查看历史
常规
链入页面
相关更改
特殊页面
页面信息
外观
移至侧栏
隐藏
您的更改会在有权核准的用户核准后向读者展示。
警告:
您没有登录。如果您进行任何编辑,您的IP地址会公开展示。如果您
登录
或
创建账号
,您的编辑会以您的用户名署名,此外还有其他益处。
反垃圾检查。
不要
加入这个!
= C语言字符串输入输出 = == 介绍 == 在C语言中,'''字符串'''是由字符组成的数组,以空字符('\0')作为结束标志。字符串的输入输出是编程中的基础操作,涉及多种函数和方法。本章将详细介绍如何在C语言中读取和输出字符串,包括标准库函数的使用、注意事项以及常见错误。 == 字符串基础 == C语言中的字符串本质上是字符数组。例如: <syntaxhighlight lang="c"> char str[10] = "Hello"; // 字符串"Hello"存储在字符数组中 </syntaxhighlight> 字符串以空字符('\0')结尾,因此数组长度必须至少比字符串长度多1。 == 字符串输出 == C语言提供了多种输出字符串的函数,最常用的是'''printf'''和'''puts'''。 === 使用printf函数 === <syntaxhighlight lang="c"> #include <stdio.h> int main() { char str[] = "Hello, World!"; printf("字符串: %s\n", str); // 使用%s格式说明符输出字符串 return 0; } </syntaxhighlight> '''输出:''' <pre> 字符串: Hello, World! </pre> === 使用puts函数 === puts函数会自动在输出后添加换行符。 <syntaxhighlight lang="c"> #include <stdio.h> int main() { char str[] = "Hello, World!"; puts(str); // 输出字符串并换行 return 0; } </syntaxhighlight> '''输出:''' <pre> Hello, World! </pre> == 字符串输入 == C语言提供了多种输入字符串的函数,包括'''scanf'''、'''gets'''和'''fgets'''。 === 使用scanf函数 === scanf函数可以使用%s格式说明符读取字符串,但会忽略空白字符(如空格、制表符)。 <syntaxhighlight lang="c"> #include <stdio.h> int main() { char str[20]; printf("请输入字符串: "); scanf("%s", str); // 读取字符串(遇到空格停止) printf("输入的字符串: %s\n", str); return 0; } </syntaxhighlight> '''输入:''' <pre> 请输入字符串: C Programming </pre> '''输出:''' <pre> 输入的字符串: C </pre> 注意:scanf在遇到空格时会停止读取,因此只读取了"C"。 === 使用gets函数(不推荐) === gets函数可以读取一行字符串(包括空格),但不检查数组边界,可能导致缓冲区溢出。 <syntaxhighlight lang="c"> #include <stdio.h> int main() { char str[20]; printf("请输入字符串: "); gets(str); // 读取一行(不安全) printf("输入的字符串: %s\n", str); return 0; } </syntaxhighlight> '''输入:''' <pre> 请输入字符串: C Programming </pre> '''输出:''' <pre> 输入的字符串: C Programming </pre> 注意:gets函数已被弃用,建议使用fgets代替。 === 使用fgets函数(推荐) === fgets函数更安全,可以指定最大读取长度。 <syntaxhighlight lang="c"> #include <stdio.h> int main() { char str[20]; printf("请输入字符串: "); fgets(str, sizeof(str), stdin); // 安全读取一行 printf("输入的字符串: %s", str); return 0; } </syntaxhighlight> '''输入:''' <pre> 请输入字符串: C Programming </pre> '''输出:''' <pre> 输入的字符串: C Programming </pre> 注意:fgets会保留换行符(如果输入未超出缓冲区)。 == 常见问题与注意事项 == 1. '''缓冲区溢出''':使用scanf或gets时,如果输入超出数组长度,会导致未定义行为。 2. '''换行符处理''':fgets会保留换行符,可能需要手动去除。 3. '''空字符''':确保字符串以'\0'结尾,否则可能导致输出错误。 == 实际案例 == 以下是一个完整的程序,演示如何安全地读取和输出字符串: <syntaxhighlight lang="c"> #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; } </syntaxhighlight> '''输入:''' <pre> 请输入您的名字: Alice </pre> '''输出:''' <pre> 您好, Alice! </pre> == 总结 == * 使用printf和puts输出字符串。 * 使用fgets安全地输入字符串,避免使用gets。 * 注意缓冲区溢出和换行符处理。 通过掌握这些函数和技巧,您可以高效地处理C语言中的字符串输入输出操作。 [[Category:编程语言]] [[Category:C]] [[Category:C 语言字符串]]
摘要:
请注意,所有对代码酷的贡献均被视为依照知识共享署名-非商业性使用-相同方式共享发表(详情请见
代码酷:著作权
)。如果您不希望您的文字作品被随意编辑和分发传播,请不要在此提交。
您同时也向我们承诺,您提交的内容为您自己所创作,或是复制自公共领域或类似自由来源。
未经许可,请勿提交受著作权保护的作品!
取消
编辑帮助
(在新窗口中打开)