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

曲奇饼干

我确信以前已经回答过这个问题,但我无法回答这些问题。我正在学习 C 入门课程,并且提供了一个头文件 cs50.h,其中包含字符串类型。所以虽然我一直在使用它,但我不太确定它是如何工作的。

我的目标是将argv[1][0]argv[1][1] 处字符转换为const char *variable虽然我知道答案肯定涉及指针和地址,但我还没有找到成功的组合。我在这里问是希望有人可以用我自己的代码向我展示正确的方法,这样我就可以学习如何去做。

更新我试图从第二个字符(即不是文件名的第一个字符串)中获取前两个字符,因此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);

}
伦丁

argv[1][0]是 type char,所以如果你想用这个字符作为第一个字母构造一个字符串,它应该是:

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

请注意,将指针隐藏在 typedef 后面是非常糟糕的做法,因此您应该避免使用 cs50 库,因为它教导了这种糟糕的做法。他们将“字符串”定义为typedef char *string;. 虽然指针隐藏很糟糕,但名称string更糟,因为名称与 C++ 冲突,std::string因此读者在看到代码时会有很多困惑。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么`execvp`接受`char * const argv []`?

来自分类Dev

在 argv 主参数中传递 const char

来自分类Dev

如何在C ++中初始化char * const argv []

来自分类Dev

用常量参数定义 main (const int argc, const char * const argv[])?

来自分类Dev

如何使数组中的每个数字都像const char * argv []一样存储一个字符串?

来自分类Dev

(const char *)++或(const char)++?

来自分类Dev

在哪种情况下,我要使用int main(int argc,const char * argv [])?

来自分类Dev

如何从QString获取const char *

来自分类Dev

创建字符串如何改变const char *指向的值?

来自分类Dev

Sizeof const char *错误值

来自分类Dev

const_cast <char *>(char * const)不是左值吗?

来自分类Dev

C / C ++ char ** argv VS * argv []

来自分类Dev

const char * vs const char []

来自分类Dev

std :: string.assign(const char *)或op =(带有const char *)会创建char *的副本吗?

来自分类Dev

std :: string.assign(const char *)或op =(带有const char *)会创建char *的副本吗?

来自分类Dev

const char **和char **

来自分类Dev

在Visual Works图像中创建const char **

来自分类Dev

在Visual Works图像中创建const char **

来自分类Dev

在字符串中加入 const char*

来自分类Dev

引用const char的右值的重载解析*

来自分类Dev

传入char * argv []与声明char * argv有什么区别?

来自分类Dev

字符串文字和const char []或char []之间的区别

来自分类Dev

什么是C ++中的char ** argv []?

来自分类Dev

在C ++中将字符串结尾作为const char *获取

来自分类Dev

g ++将返回的字符串文字视为const char指针而不是const char数组

来自分类Dev

在std :: __ cxx11 :: basic_string <char,std :: char_traits <char>,...,std :: allocator <char>> const&)中获取未知的分段错误“(地址)const()const()

来自分类Dev

错误:无法将参数1的const字符串转换为const char *到size_t strlen(const char *)

来自分类Dev

错误:无法将参数1的const字符串转换为const char *到size_t strlen(const char *)

来自分类Dev

constexpr const char *与constexpr const char []

Related 相关文章

  1. 1

    为什么`execvp`接受`char * const argv []`?

  2. 2

    在 argv 主参数中传递 const char

  3. 3

    如何在C ++中初始化char * const argv []

  4. 4

    用常量参数定义 main (const int argc, const char * const argv[])?

  5. 5

    如何使数组中的每个数字都像const char * argv []一样存储一个字符串?

  6. 6

    (const char *)++或(const char)++?

  7. 7

    在哪种情况下,我要使用int main(int argc,const char * argv [])?

  8. 8

    如何从QString获取const char *

  9. 9

    创建字符串如何改变const char *指向的值?

  10. 10

    Sizeof const char *错误值

  11. 11

    const_cast <char *>(char * const)不是左值吗?

  12. 12

    C / C ++ char ** argv VS * argv []

  13. 13

    const char * vs const char []

  14. 14

    std :: string.assign(const char *)或op =(带有const char *)会创建char *的副本吗?

  15. 15

    std :: string.assign(const char *)或op =(带有const char *)会创建char *的副本吗?

  16. 16

    const char **和char **

  17. 17

    在Visual Works图像中创建const char **

  18. 18

    在Visual Works图像中创建const char **

  19. 19

    在字符串中加入 const char*

  20. 20

    引用const char的右值的重载解析*

  21. 21

    传入char * argv []与声明char * argv有什么区别?

  22. 22

    字符串文字和const char []或char []之间的区别

  23. 23

    什么是C ++中的char ** argv []?

  24. 24

    在C ++中将字符串结尾作为const char *获取

  25. 25

    g ++将返回的字符串文字视为const char指针而不是const char数组

  26. 26

    在std :: __ cxx11 :: basic_string <char,std :: char_traits <char>,...,std :: allocator <char>> const&)中获取未知的分段错误“(地址)const()const()

  27. 27

    错误:无法将参数1的const字符串转换为const char *到size_t strlen(const char *)

  28. 28

    错误:无法将参数1的const字符串转换为const char *到size_t strlen(const char *)

  29. 29

    constexpr const char *与constexpr const char []

热门标签

归档