相关疑难解决方法(0)

如何读取用户在C中输入的字符串?

我想阅读用户使用C程序输入的名称.

为此,我写道:

char name[20];

printf("Enter name: ");
gets(name);
Run Code Online (Sandbox Code Playgroud)

但是使用gets不好,那么更好的方法是什么?

c stdin

47
推荐指数
3
解决办法
18万
查看次数

如何在C++中将字符串转换为double?

如何在C++中将字符串转换为double?我想要一个函数,当字符串不是数字时返回0.

c++

34
推荐指数
6
解决办法
12万
查看次数

检查scanf中的值是否为数字?

以最简单的方式,我如何检查从函数初始化的整数scanf是否为数字?

c

9
推荐指数
2
解决办法
5万
查看次数

scanf()好奇的行为!

我最近偶然发现了一个奇怪的案例(至少对我而言,因为我之前没有遇到过这种情况).考虑下面的简单代码: -

int x;
scanf("%d",&x);
printf("%d",x);
Run Code Online (Sandbox Code Playgroud)

上面的代码采用正常的整数输入并按预期显示结果.

现在,如果我将上面的代码修改为以下代码: -

int x;
scanf("%d ",&x);//notice the extra space after %d
printf("%d",x);
Run Code Online (Sandbox Code Playgroud)

这会在它给出printf语句的结果之前接受另一个额外的输入.我不明白为什么空格会导致scanf()的行为发生变化..任何人都可以向我解释这个....

c c++ scanf

9
推荐指数
1
解决办法
1153
查看次数

在sscanf(s,"%d%n",&i,&n)中,n代表什么?

手册页指出签名sscanf

sscanf(const char *restrict s, const char *restrict format, ...);
Run Code Online (Sandbox Code Playgroud)

在SO上看到了一个答案,其中一个函数sscanf用于检查输入是否为整数.

bool is_int(char const* s) {
    int n;
    int i;
    return sscanf(s, "%d %n", &i, &n) == 1 && !s[n];
}
Run Code Online (Sandbox Code Playgroud)

看着!s[n]它似乎建议我们检查是否sscanf扫描了字符序列,直到终止字符\0.所以我假设n代表索引,s当函数结束时sscanf将在字符串中.

但是这个变量i怎么样?这是什么意思?

编辑:

更明确一点:我看到签名需要sscanf一个类型的指针char *作为第一个参数.格式说明符作为seconf参数,因此它知道如何解析字符序列以及与下一个参数一样多的转换说明符变量.我现在明白这i是为了保存解析的整数.

由于只有一个格式说明符,我试图推断出函数n.

我的假设是n正确的吗?

c

7
推荐指数
2
解决办法
1万
查看次数

将字符串化十六进制字符转换为std :: string

我有以下内容:

char const* code = "3D";
Run Code Online (Sandbox Code Playgroud)

我需要将这个2位数词法十六进制转换为std :: string,这将是一个长度为1的字符串(不包括空终止符).我也可以使用boost库.我怎样才能做到这一点?

在上面的例子中,如果正确转换,我应该有一个打印"="的std :: string.

c++ string boost

2
推荐指数
1
解决办法
3098
查看次数

标签 统计

c ×4

c++ ×3

boost ×1

scanf ×1

stdin ×1

string ×1