相关疑难解决方法(0)

scanf的缺点

我想知道它的缺点scanf().

在许多站点中,我已经读过使用scanf可能导致缓冲区溢出.这是什么原因?还有其他缺点scanf吗?

c user-input input scanf

58
推荐指数
6
解决办法
5万
查看次数

man sscanf:%d 在 C 或 glibc 中已弃用?

我刚刚阅读 glibcsscanf 手册页(来自 Linux 手册页包),发现了以下内容:

\n
\n

可以使用以下转换说明符:
\n(...)

\n

d \xc2\xa0\xc2\xa0 已弃用。匹配一个可选的有符号十进制整数;\nnext 指针必须是指向 的指针int

\n

i \xc2\xa0\xc2\xa0 已弃用。匹配一个可选的有符号整数;next\n指针必须是指向 的指针int。如果整数以 或 开头,则以 16 为基数读取0x0X如果以 开头,则以 8 为基数读取 0;否则以 10 为基数读取。仅使用与\n基数相对应的字符。

\n

o \xc2\xa0\xc2\xa0 已弃用。匹配无符号八进制整数;下一个指针\n必须是指向 的指针unsigned int

\n

(...)

\n
\n
    \n
  • 怎么就%d被废弃了呢?似乎所有int说明符都已弃用。
  • \n
  • 它是什么意思以及有什么可以替代它们?
  • \n
\n

c gnu glibc scanf

39
推荐指数
6
解决办法
4209
查看次数

scanf%u负数?

我已经尝试了scanf("%u",&number),我输入了负数,问题就在于printf("%d",number)我得到负数.我以为这会阻止我阅读负数.是scanf("%d",&number)scanf("%u",&number)真的一样吗?或者只是为了可读性.

我在做一些叫做未定义行为的事情吗?

编辑:

维基百科我读到这个:

%u:扫描十进制无符号整数(注意,在C99标准中,输入值减号是可选的,因此如果读取减号,则不会出现错误,结果将是负数的二进制补码,可能是非常大的价值.

阅读SO答案及以上,有点令人困惑.有人能说得更清楚吗?

c printf unsigned scanf format-specifiers

5
推荐指数
1
解决办法
5436
查看次数

标签 统计

c ×3

scanf ×3

format-specifiers ×1

glibc ×1

gnu ×1

input ×1

printf ×1

unsigned ×1

user-input ×1