问题标签 [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.

0 投票
2 回答
883 浏览

c - C中的函数strtol超出范围......或不是

我尝试使用 strtol() 从字符串中读取一个数字,它返回 LONG_MAX 数字,当数字超出范围时应该返回该数字,但我的数字不是那么大

实际结果:
110111010111111000000000
7FFFFFFF

需要的结果:
110111010111111000000000
DD7C00

0 投票
3 回答
154 浏览

c - 分解循环的结束条件

晚上好,

我在分配作业时遇到问题。

基本上,我们需要编写一个程序来计算给定stdin. 数据只能通过其进入程序stdin,无论是通过一个echo还是一个< file.txt。数据流永远不会超过 80 个字符(它们可以是数字,也可以不是数字)。

我在程序中使用的函数是read(),strotol()strtok(), “不相关”的代码流程如下:

  1. 用于malloc分配 80 个初始字节的内存。
  2. int通过read()读取的字符数(我相信,最后一个)存储在 中\0
  3. 重新分配内存realloc()以节省尽可能多的内存(我知道在这种情况下这很简单,但是哦……)。

现在是棘手的一点:

  1. 由于数据必须用空格分隔,因此要检查的最大项目数最多为:(n/2)+1,其中n是在上点 nº 2 处读取的字符数。
  2. 创建一个数组,long其最大大小为在点 nº 1 中获得的数字。
  3. 填充numbers[0]结果:strtol(strtok(line, delim), &end, 10)
  4. 添加1counter并进入一个while循环:

    /li>

现在,这里有一些输入和它们的输出:

输入: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

0 投票
2 回答
312 浏览

c - 使用 memcpy 和 strtoul 获取乱码而不是数字

我在 gcc 下编译了以下代码:

我正在尝试以以下方式对其进行测试:

但是,我得到以下结果:

解析结果:Along 1 is 1234567890 Along 2 is 4294967295

为什么第二个 unsigned long 是错误的?

谢谢

0 投票
2 回答
8480 浏览

c - 将十六进制字符串转换为长字符串

我正在尝试在 32 位机器上进行十六进制到整数的转换。这是我正在测试的代码,

这就是我得到的:

如您所见,使用 strtol 时出现溢出(我还检查了 errno),尽管我希望不会发生任何事情,因为 0xffff1234 是一个有效的 32 位整数值。我要么期望 4294906420 要么 -60876

我错过了什么?

0 投票
2 回答
1607 浏览

c - 当 strtok 返回 NULL 时,strtol 给出段错误

/* b.csv

//我的输出

*/

问题是:/* b.csv

如果表被破坏如上“strtok”返回NULL,所以“strtol”给出“segfault”..如何解决它?

这里的主要问题是如果 2nd 不存在,它将 3rd 视为第二个并给出段错误!例如在 b.csv “,,,34” 的第三行中是否存在表示第三个值,但它的行为就像“34”是第一个值,第二个和第三个分别是 NULL !

0 投票
2 回答
4479 浏览

c - linux C字符串到int

我正在尝试将此字符串转换"09195462965"为 int,但遇到了问题。

我的代码片段:

客户端发送一个字符串,"09195462965"然后服务器接收它。

现在在服务器上,该字符串必须转换为intie 09195462965

注意:服务器将数字作为字符串发送。

0 投票
1 回答
1086 浏览

atoi - STM32 atoi 和 strtol 有时会丢失前 2 位数字

我正在读取通过 RS485 发送的值,这是编码器的值我首先检查它是否返回了 E 字符(编码器报告错误),如果没有,则执行以下操作

缓冲区中的值为 4033536 并且位置设置为 33536 这不会在此函数中每次都发生,可能 1000 次中的 1 次,尽管我没有计算。如果失败,将程序计数器重新设置并再次执行该行会返回相同的结果,但再次启动调试器会导致值正确转换。

我正在使用 keil uvision 4,它是一个使用 stm32f103vet6 和 stm32f10 库 V2.0.1 的自定义板,这真的让我很难过,从来没有遇到过这样的事情,在得到任何帮助之前,我们将不胜感激。

谢谢

0 投票
3 回答
601 浏览

c - strtol 重用参数

此代码似乎按预期工作,使用单个指针填充数字数组

我的问题是:

在 strtol 中使用 p 作为 param1(源)和 &p 作为 param 2(第一个无效字符的地址)是否有效?

0 投票
2 回答
711 浏览

c - strtol 不从 read(fd,buffer,ssize_t) 转换字符串

strtol 不会转换我从阅读文本文件中获得的字符串。

}

当我运行编译的代码时,控制台给了我这个

我要做的就是将 031 转换为值为 31 的 long 或 int。

0 投票
5 回答
121 浏览

objective-c - 为什么这段代码有一个 3 个字节的数组来构建一个“整个字节”?

我在互联网上找到了以下代码,它将NSString表示形式
@"00F04100002712"转换为实际的字节数组。该代码有效并且确实生成了正确的输出;我只是不明白为什么有char byte_chars[3]而不是char byte_chars[2]因为代码中只使用了前两个位置。

我认为这与strtol函数调用有关,但我不确定是什么。

有人可以解释这是如何以及为什么起作用的吗?