arrays - 在 C 中使用 scanf 处理字符串
问题描述
大家好,我对这段代码有疑问:
#define MAX_LIMIT 5
#include <stdio.h>
#include <stdlib.h>
int main()
{
char S[MAX_LIMIT];
scanf("%s", S);
printf("%s\n", S);
}
如您所见,“MAX_LIMIT”值为 5,因此我不希望刺痛“S”的字符数超过 5 个......当我输入超过此限制的输入单词时,就会出现问题。
例如,如果我写“1234567890”,我希望 printf 打印“1234”,但它打印“1234567890”,我不知道为什么......我也尝试在输入之后添加fflush(stdin);
或getchar();
,但它没有工作
我已经尝试过fgets(S, MAX_LIMIT, stdin);
并且它有效,但我仍然不明白为什么如果我使用scanf
它不会...
解决方案
尝试使用fgets
函数而不是scanf
https://www.tutorialspoint.com/c_standard_library/c_function_fgets.htm
推荐阅读
- angular - 共享 Angular 上的 PhpStorm 和智能感知问题 - Nativescript 项目
- macos - 禁止 dyld 加载消息
- swift - 是否有一个真正的错误方法来查看当前的 SKView 是什么?
- kotlin - kotlin REPL 是否具有代码完成功能?
- ios - 如何使用 SwiftyJSON 读取数组中的 JSON 数据?
- c++ - 将 Linux 库项目转换为可在 Windows 中使用的库项目
- angular - 角占位符文本正在隐藏在行下
- mikro-orm - ST_Distance_Sphere 使用 MySQL 驱动程序的 Mikro-orm 命令
- cassandra - 指定分区键时对 cassandra 中的二级索引进行查询
- elasticsearch - 检查数组是否包含字段 == x 的对象