字符串遇到指定的字符停止输入

本文介绍了一个简单的C语言函数voidCIN,该函数用于从标准输入读取字符直到遇到逗号。通过for循环逐个字符读取,并使用getchar函数进行输入处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

void CIN(char *st,int len){
    int i;char ch=',';
    for(i = 0;i < len;++ i){
        st[i] = getchar();
        if(st[i] == ch) break;
    }
    st[i] = '\0';
}
### 处理字符串输入中的回车符 当使用`%c`格式化输入时,可以接收`\n`这样的空白字符[^1]。这意味着读取单个字符时不会跳过任何类型的空白字符,包括换行符。 对于 `%s` 格式的输入,则会自动忽略前置的空白字符停止于第一个遇到的空白字符之后。因此,在处理以回车符结束的一行字符时,建议采用其他方法来确保整个行被正确读入而不遗漏或误判终止位置。 一种常见做法是在读取一行文本时利用 `fgets()` 函数而不是 `scanf("%s", ...)` 或者逐字节读取方式如 `getchar()` 和 `getc()` 系列函数。`fgets()` 能够安全地读取整行数据直到遇见换行或者达到指定的最大长度减一(留作null终结),这有助于防止缓冲区溢出风险的同时保留了原始输入中的换行标记: ```c #include <stdio.h> int main(void){ char buffer[256]; printf("请输入一些文字:\n"); if (NULL != fgets(buffer, sizeof(buffer), stdin)){ // 去除可能存在的结尾换行符 size_t length = strlen(buffer); if ('\n' == buffer[length - 1]){ buffer[length - 1] = '\0'; } puts("您刚刚输入的是:"); puts(buffer); }else{ perror("无法读取输入"); } return 0; } ``` 上述代码展示了如何通过检测并移除由 `fgets()` 返回字符串末尾可能出现的换行符来实现更精确的数据获取。 另外需要注意的是,如果程序逻辑允许的话,还可以考虑使用标准库提供的更高层次接口比如 getline() 来简化操作流程;不过该功能并非 ANSI C 的一部分而是 POSIX 扩展的一部分,所以在跨平台开发场景下需谨慎选用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值