ASCII码表(图),很有用的东西

 

 

 

在 C 语言中,`fgets` 函数用于从流(通常是标准输入)读取一行内容到字符串中。关于 `fgets` 输入字符串的最后一个字符,以下是详细解释: 当使用 `fgets(str, size, stream)` 成功读取时: 1. 如果读取的内容未达到缓冲区的最大长度 (`size-1`) 并且遇到了换行符 `\n` ,那么该换行符会被包含进读取的结果中作为最后一个非空字符。 2. 在所有有效字符之后(包括可能存在的换行符),`fgets` 总会在字符串末尾添加一个 null 字符 `\0` 来标记字符串结束。 因此,实际存储在目标数组中的最后一个字节总是为零值字符(ASCII码表中的null character)。而用户所见“最后”的可见或不可见字符则可能是正常的字母数字、标点符号或者是那个代表新行开始的`\n`(仅当你输入的是完整的一行并且有按Enter键产生的)。 举个例子来说,如果你执行下面这个简单的程序并输入"hello world": ```c #include <stdio.h> int main(void) { char buf[50]; printf("Type something: "); fgets(buf, sizeof(buf), stdin); printf("You typed: %s",buf); return 0; } ``` 假设用户按下回车后停止录入,则最终存放于变量`buf[]`里的数据形式大致像这样:`{'h','e','l','l','o',' ','w','o','r','l','d','\n','\0'}`。 所以总结起来就是: - **正常情况**下,如果是完整的单行输入,最后一个有意义的字符很可能是`\n`。 - 每次调用结束后都会自动追加上表示串终结的特殊记号——`\0`,它是真正意义上占据字符串末端位置的东西但一般对我们透明处理不需要特别关注除非涉及底层分析调试等情况。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值