问题标签 [strtol]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c - C中的函数strtol超出范围......或不是
我尝试使用 strtol() 从字符串中读取一个数字,它返回 LONG_MAX 数字,当数字超出范围时应该返回该数字,但我的数字不是那么大
实际结果:
110111010111111000000000
7FFFFFFF
需要的结果:
110111010111111000000000
DD7C00
c - 分解循环的结束条件
晚上好,
我在分配作业时遇到问题。
基本上,我们需要编写一个程序来计算给定stdin
. 数据只能通过其进入程序stdin
,无论是通过一个echo
还是一个< file.txt
。数据流永远不会超过 80 个字符(它们可以是数字,也可以不是数字)。
我在程序中使用的函数是read()
,strotol()
和strtok()
, “不相关”的代码流程如下:
- 用于
malloc
分配 80 个初始字节的内存。 int
通过read()
读取的字符数(我相信,最后一个)存储在 中\0
。- 重新分配内存
realloc()
以节省尽可能多的内存(我知道在这种情况下这很简单,但是哦……)。
现在是棘手的一点:
- 由于数据必须用空格分隔,因此要检查的最大项目数最多为:
(n/2)+1
,其中n
是在上点 nº 2 处读取的字符数。 - 创建一个数组,
long
其最大大小为在点 nº 1 中获得的数字。 - 填充
numbers[0]
结果:strtol(strtok(line, delim), &end, 10)
。 添加
/li>1
到counter
并进入一个while
循环:
现在,这里有一些输入和它们的输出:
输入:echo 1 2 3 4 5 6 7 8 9 10 | ./factors
输出:
Input./factors < integers.txt
其中 integers 包含一列整数。
输出:
所有整数都被分解得很好,最后打印出:
输入:echo abc 12 13 14 15 | ./factors
输出:
输入:echo -1 -2 -3 -4 -5 | ./factors
输出:
输入:echo abc abc abc | ./factors
输出:
(并且不继续检查)。
输入:echo 3 4 0 6 7 | ./factors
输出:
(并且不继续检查)。
据我所知,当它遇到一个0
以上的非或基本上在基于健康的数据流integer
的末尾的实例时,它会失败。integer
知道我该如何解决这个问题,为什么它会如此明显地随机失败?
我应该让你知道我是 C 的新手...
非常感谢您。
==================================================== ==
EDIT1:根据请求,这里是生成的代码片段numbers[]
,并从中读取stdin
:
c - 使用 memcpy 和 strtoul 获取乱码而不是数字
我在 gcc 下编译了以下代码:
我正在尝试以以下方式对其进行测试:
但是,我得到以下结果:
解析结果:Along 1 is 1234567890 Along 2 is 4294967295
为什么第二个 unsigned long 是错误的?
谢谢
c - 将十六进制字符串转换为长字符串
我正在尝试在 32 位机器上进行十六进制到整数的转换。这是我正在测试的代码,
这就是我得到的:
如您所见,使用 strtol 时出现溢出(我还检查了 errno),尽管我希望不会发生任何事情,因为 0xffff1234 是一个有效的 32 位整数值。我要么期望 4294906420 要么 -60876
我错过了什么?
c - 当 strtok 返回 NULL 时,strtol 给出段错误
/* b.csv
//我的输出
*/
问题是:/* b.csv
如果表被破坏如上“strtok”返回NULL,所以“strtol”给出“segfault”..如何解决它?
这里的主要问题是如果 2nd 不存在,它将 3rd 视为第二个并给出段错误!例如在 b.csv “,,,34” 的第三行中是否存在表示第三个值,但它的行为就像“34”是第一个值,第二个和第三个分别是 NULL !
c - linux C字符串到int
我正在尝试将此字符串转换"09195462965"
为 int,但遇到了问题。
我的代码片段:
客户端发送一个字符串,"09195462965"
然后服务器接收它。
现在在服务器上,该字符串必须转换为int
ie 09195462965
。
注意:服务器将数字作为字符串发送。
atoi - STM32 atoi 和 strtol 有时会丢失前 2 位数字
我正在读取通过 RS485 发送的值,这是编码器的值我首先检查它是否返回了 E 字符(编码器报告错误),如果没有,则执行以下操作
缓冲区中的值为 4033536 并且位置设置为 33536 这不会在此函数中每次都发生,可能 1000 次中的 1 次,尽管我没有计算。如果失败,将程序计数器重新设置并再次执行该行会返回相同的结果,但再次启动调试器会导致值正确转换。
我正在使用 keil uvision 4,它是一个使用 stm32f103vet6 和 stm32f10 库 V2.0.1 的自定义板,这真的让我很难过,从来没有遇到过这样的事情,在得到任何帮助之前,我们将不胜感激。
谢谢
c - strtol 重用参数
此代码似乎按预期工作,使用单个指针填充数字数组
我的问题是:
在 strtol 中使用 p 作为 param1(源)和 &p 作为 param 2(第一个无效字符的地址)是否有效?
c - strtol 不从 read(fd,buffer,ssize_t) 转换字符串
strtol 不会转换我从阅读文本文件中获得的字符串。
}
当我运行编译的代码时,控制台给了我这个
我要做的就是将 031 转换为值为 31 的 long 或 int。
objective-c - 为什么这段代码有一个 3 个字节的数组来构建一个“整个字节”?
我在互联网上找到了以下代码,它将NSString
表示形式
@"00F04100002712"
转换为实际的字节数组。该代码有效并且确实生成了正确的输出;我只是不明白为什么有char byte_chars[3]
而不是char byte_chars[2]
因为代码中只使用了前两个位置。
我认为这与strtol
函数调用有关,但我不确定是什么。
有人可以解释这是如何以及为什么起作用的吗?