![]() |
1
4
你可以使用
|
![]() |
2
1
使用它是危险的。由于存在从无符号char*到int*的隐式强制转换,如果数字大于0xff,则将使用堆栈中变量旁边的字节(max 3)并损坏它们的值。 %hhd的问题是,根据int的大小(不一定是4个字节),它可能不是1个字节。 似乎SScanf不支持将数字存储到char中,我建议您改用int。但是,如果您希望将char翻转过来,可以在后面将int转换成char,比如:
|
![]() |
3
0
在大多数情况下,通过对整数使用char,可以节省一点到一点。 它通常依赖于体系结构和编译器,但大多数现代CPU在处理与寄存器大小不同的数据类型方面不是很好。(值得注意的例外是64位架构上的32位int。) 这里增加了对非CPU字对齐内存访问的惩罚(不要问我为什么CPU会这样做),char的使用应该限于实际需要char或内存消耗的情况。 |
![]() |
4
0
这是不可能的。 SScanf在读取整数时永远不会写入单字节。 如果将指向单个已分配字节的指针作为指向int的指针传递,则会超出界限。由于默认对齐,这可能是可以的,但您不应该依赖于此。 创建临时文件。这样,您还可以运行时检查它。 |
![]() |
5
0
可能最简单的方法是将数字简单地加载到一个临时整数中,并且仅当它在所需的边界中时才存储它。(你可能需要
|
![]() |
6
0
这很危险。scanf将在字符大小的变量上写入整数大小的值。在您的示例中(很可能),除非重新组织堆栈变量,否则不会发生任何事情(在尝试写入整数大小的“dest”时,scanf将部分覆盖len,但随后它返回正确的“len”,并用“right”值覆盖len)。 相反,要做“正确的事情”,而不是依赖于编译器的情绪:
|
![]() |
ViSa · 如何在python中分隔存储在变量中的文本以创建数据帧? 10 月前 |
![]() |
Joan Lopez · 从csv中提取的数据获得平均值 1 年前 |
![]() |
Chinmaya Tewari · 创建新csv文件时权限被拒绝 1 年前 |
|
Parker Clark · 通过Bash操作csv中的特定列? 1 年前 |
![]() |
James Black · 如何基于列删除CSV文件中重复的行 1 年前 |