C语言 仅获取字符串的前2个字符

4nkexdtk  于 2023-01-01  发布在  其他
关注(0)|答案(4)|浏览(287)

我想用另一个字符串的前两个字符组成一个字符串
所以我有:

int main(int argc, string argv[])
{
    string s = argv[1];
    string key = // here is where I dont know how to get the first 2 chars.
    printf("%s\n", key);
}

如果argv[1]为:1220kjs,我需要字符串"key"为12,argv [1]可以是数字或字符。所以如果argv [1]输入为jths528as,我需要字符串"key"为"jt"。
我已经尝试了各种方法,但不能让它编译。s. Substring(0,2)给我错误:成员引用基类型"string"(又称"char *")不是结构或联合
我找到了解决办法:

string t = argv[1];
char key[3];
strncpy(key, t, 2);
key[2] = '\0';
rdlzhqv9

rdlzhqv91#

考虑到你在问题中提供的内容,以及对你的意思的理解,我只能假设argv是一个二维数组,要么是int,要么是char。

string a = argv[1][0]; // so this has 1
string b = argv[1][1]; // this has 2 in it

你希望c是12岁。

int[,] t = new int[2, 6] {{1,2,3,4,5,6},
                              {1,2,2,0,8,5}};

    string a = Convert.ToString(t[1,0]);
    string b = Convert.ToString(t[1,1]);

    string c = a+b; // "12"

从这里你可以把它转换成一个数字,如果你需要它作为12。

w8ntj3qf

w8ntj3qf2#

下面是我使用的方法:

string key = argv[1];

char c[3] = {key[0], key[1], '\0'};

string s = c;

printf("string: %s\n", s);
5fjcxozz

5fjcxozz3#

因为源字符串可能很小,比如"x",或者理论上是"",所以只需打印一个大小限制:

if (argc >= 2) {
  int n = 2;
  char key[n + 1];
  // Print up to n characters & form a string.
  snprintf(key, n + 1, "%s", argv[1]); 
  printf("<%s>\n", key);
}
amrnrhlw

amrnrhlw4#

你用的是哪个编译器?我用gnu试过你的代码,用substr也能很好地工作。下面的代码也能工作,你可以试着改变构造函数。

int main(int argc, string argv[])
{
    string s(argv[1]);
    string key = s.substr(0,2);
    printf("%s\n", key.c_str());
}

相关问题