c - 如何避免 '+' '-' vanshing 但没有意义?

标签 c input

unsigned u;
int i = scanf("%u",&u);
int c = getchar();
printf("%d is %u%c",i,u,c);//unsigned still has a type like orignal type
return 0;

输入

+

输出

0 is 4198579'\n'

'\n'是我添加的。
那么如何避免'+''-'消失但毫无意义呢?
如果我想实现复数类型,如何对“+i”、“-i”和“-888”进行分类?
scanf("%d") ,如果为 false,'+''-' 已被取出,-i 无法正确表示。

最佳答案

int i = scanf("%u",&u);

您必须使用一些值初始化u,或者至少为scanf提供一些值。如果您在 scanf 期间不提供输入,则 u 是一个带有垃圾值的未初始​​化局部变量。还可以使用 fgets 代替 scanf,这被认为更安全。

0 is 4198579'\n'

请阅读,

Using symbols read by scanf() as C operators

即使 getchar() 也无济于事。您需要为此编写自己的解析器。

或者,如果您只想打印标志,请尝试使用 ASCII,

#define PLUSSIGN 43


unsigned int u = PLUSSIGN;
printf("%d is %u%c",i,u,c);

其他方法包括使用枚举类型来定义具有 ASCII 值的符号。如果您想根据某些输入以编程方式使用符号,这会有所帮助, 或者您可以在 switch 语句中将它们用作字符串(最简单的方法)。根据您要实现的目标选择任意方法。

关于c - 如何避免 '+' '-' vanshing 但没有意义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58245372/

相关文章:

c - 关于x86-64汇编语言中的局部变量寄存器的问题

c - 防止线程终止影响 C 中的父进程?

html - 表格突出显示和轮廓大小

Java拆分输入

c - 从文本文件中读取指令

使用 memcpy 将一维数组复制到一行二维数组

c - 使用 malloc 为字符串分配内存(c++ 源代码)

python - Linux 中的 GetLastInputInfo 等效于检测上次输入时间

javascript - jquery 表单验证需要一组输入中的一个并且要求输入是一个整数

c - 这段代码如何解决?