我确信这已经得到了回答,但我无法解决问题 . 我正在做一个入门C课程,并且有一个提供的 Headers ,cs50.h,其中包含字符串类型 . 因此,虽然我一直在使用它,但我不太确定它是如何工作的 .
我的目标是将 argv[1][0] 和 argv[1][1] 中的角色变成 *const char variable . 虽然我知道答案肯定涉及指针和地址,但我无法找到成功的组合 . 我在这里问,希望有人能用我自己的代码向我展示正确的方法,这样我就可以学习如何去做 .
UPDATE 我试图从第二个获取前两个char字符(即第一个不是文件名的字符串)因此, argv[1][0] 和 argv[1][1] 所以给定的输入将类似于这个helloworld,我只想要'h'和'e' . 我不知道如何将argv数组中的'h'和'e'组合成一个const char *变量,这是我需要将其传递给另一个函数所需的格式 .
#include <stdio.h>
#include <cs50.h>
#include <string.h>
int main(int argc, string argv[])
{
string saltget[2] = { &argv[1][0] , &argv[1][1] };
printf("%s\n", saltget);
}
2 回答
argv[1][0]
的类型为char
,因此如果您希望构造一个以此字符作为首字母的字符串,它将是:请注意,隐藏在typedef后面的指针是非常糟糕的做法,所以你应该避免使用cs50库,因为它教导了这种不好的做法 . 他们将"string"定义为
typedef char *string;
. 虽然指针隐藏不好,但名称string
更糟糕,因为名称与Cstd::string
发生冲突,因此当读者看到代码时会有很多混淆 .你确定要转换
argv[1][0] and argv[1][1]
而不是argv[1][0] and argv[2][0]
吗?我认为这段代码适用于argv[1][0] and argv[1][1]
.如果要转换
argv[1][0] and argv[2][0]
,只需将int main(int argc, char* argv[])
更改为int main(int argc, const char* argv[])