如果我想将char数组中的前3个字符作为双精度字符进行解析,而忽略以下字符,那么我真的需要这样做吗?
int main() { const char a[] = "1.23"; char *b = malloc(sizeof(char) * 4); memcpy(b, a, sizeof(char) * 3); b[3] = '\0'; printf("%f\n", strtod(b, NULL)); // Prints 1.20000, which is what I want free(b); }
难道没有一个像strtod
这样的函数允许您指定它应该搜索的数字的最大字符串长度吗?
编辑:我希望它打印1.2
(它目前这样做),而不是1.23
!
strtod
的签名如下
double strtod(const char *nptr, char **endptr);
该函数将返回由nptr
指向的字符串的初始部分。如果endptr
不是NULL
,则指向转换中使用的最后一个字符后的字符的指针将存储在endptr
引用的位置。
因此,它不允许您指定需要转换的字符数。因此,您必须修改您的输入本身,并将其传递给strtod。
如果您总是希望只考虑给定字符串中的三个第一个字符,则可以使用以下代码:
#include <stdio.h>
#include <string.h>
double parse_double(const char *str) {
char *tmp = 0;
double result = 0;
asprintf(&tmp, "%.3s", str);
result = strtod(tmp, 0);
free(tmp);
return result;
}
int main(void) {
printf("%f\n", parse_double("1.23")); // 1.2
printf("%f\n", parse_double("1234")); // 123
printf("%f\n", parse_double("0.09")); // 0.0
return 0;
}
虽然strtod()
不允许您限制字符串长度,但您可以使用具有最大字段宽度的sscanf()
,并可选检查所使用的字符数,如下所示:
#include <stdio.h>
double parseDouble(const char *str){
double val = 0;
int numCharsRead;
// Handle errors by setting or returning an error flag.
if(sscanf(str, "%3lf%n", &val, &numCharsRead) != 1){
puts("Failed to parse double!");
}
else if(numCharsRead != 3){
puts("Read less than three characters!");
}
return val;
}
int main(){
printf("%lf\n", parseDouble("1.3")); // 1.300000
printf("%lf\n", parseDouble("1.5999")); // 1.500000
printf("%lf\n", parseDouble(".391")); // 0.390000
printf("%lf\n", parseDouble(".3")); // Read less than three characters!\n0.300000
return 0;
}
sscanf(str,"%3lf%n",
指定最大字段宽度的可选十进制整数。当达到此最大值或找到不匹配的字符时(以先发生的为准),将停止读取字符。大多数转换都会丢弃初始空白字符(以下列出了例外情况),这些被丢弃的字符不会计入最大字段宽度。字符串输入转换存储一个终止的空字节('\0'),以标记输入的结束;最大字段宽度不包括此终止符。
问题内容: 我正在寻找一种方法来限制php中的字符串,并在字符串过长时在末尾添加…。 问题答案: 您可以使用类似于以下内容的东西:
问题内容: 我有以下几点: 有没有一种方法可以将字符串的长度限制为20个字符? 还有一个更好的问题是,如果超过20个字符,有没有办法我可以将字符串更改为截断并显示在末尾? 问题答案: 编辑 最新版本的报价过滤器。 您需要这样的 自定义过滤器 : 用法: 选项: 逐字(布尔)-如果为true,则仅按字数限制切入, max(整数)-文本的最大长度,切成此字符数, tail(字符串,默认值:“…”)-如
本文向大家介绍jQuery 限制输入字符串长度,包括了jQuery 限制输入字符串长度的使用技巧和注意事项,需要的朋友参考一下 我们后台做程序的时候,比如录入一篇文章,文章会有摘要,我们希望文章的字符长度是我们可以控制的,我们不希望它太长,比如限制只能输入250个字符,下面的代码实现了这种功能。 先来看一下效果图 代码如下: 以上就是本文的全部内容,希望能给大家一个参考,也希望大家多多支持呐喊教程
我正在尝试使用pycrypto加密我的数据。我已经为此编写了以下代码。 但我的错误率越来越低 如何控制输入字符串?输入字符串可以是任意长度。
要求出字符串的长度(字符的个数),我们可以使用length函数。调用这个函数的语法和我们前面看到的有点不同: int length; length = fruit.length(); 对于这种函数调用,我们称之为在字符串变量fruit上**调用(invoke)**length函数。“调用(invoke)”这个词可能看起来有点奇怪,但是后面我们还会遇到很多在对象上调用函数的例子。 函数调用的语法称
所以我们有一个例子,我们会有一个对象,其中key是id(int),值是字符串。但我们注意到,大多数时候,我们根据字符串查找id,所以我们决定将其反转并使字符串成为key,值是id。因为这样就不用遍历每个项目并比较值,我们可以只执行。下面是我们所做的示例。 下面是旧实现的示例: 以下是新实现的示例: 我知道现在字符串是键,可以为相同的字符串获取相同的id。但是现在这个字符串可能非常大(可能性很小,但