首页 文章

从argv []获取特定的字符值并创建一个新的const char

提问于
浏览
0

我确信这已经得到了回答,但我无法解决问题 . 我正在做一个入门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 回答

  • 0

    argv[1][0] 的类型为 char ,因此如果您希望构造一个以此字符作为首字母的字符串,它将是:

    char str [] = {argv[1][0], argv[1][1], '\0'};
    

    请注意,隐藏在typedef后面的指针是非常糟糕的做法,所以你应该避免使用cs50库,因为它教导了这种不好的做法 . 他们将"string"定义为 typedef char *string; . 虽然指针隐藏不好,但名称 string 更糟糕,因为名称与C std::string 发生冲突,因此当读者看到代码时会有很多混淆 .

  • 2

    你确定要转换 argv[1][0] and argv[1][1] 而不是 argv[1][0] and argv[2][0] 吗?我认为这段代码适用于 argv[1][0] and argv[1][1] .

    int main(int argc, char* argv[])//argv[1] = hello argv[2] = world
    {
    
        const char* saltget[2] = { &argv[1][0] , &argv[1][1] };
        printf("%s\n", saltget[0]);//hello
        printf("%s\n", saltget[1]);//ello
    
    }
    

    如果要转换 argv[1][0] and argv[2][0] ,只需将 int main(int argc, char* argv[]) 更改为 int main(int argc, const char* argv[])

相关问题