在运行时从argv [1]中生成字符串

时间:2014-06-20 18:44:06

标签: c string pointers

在这里学习一些C语法,并且我遇到了一些我觉得有点混乱的事情。 我正在尝试制作两个函数:

1)char* extractCharacters(char** input) 从main获取argv [1]并提取前两个字符(它们可以是任何可读的ascii字符)从中创建一个字符串。返回那个字符串。

2)char* concatenate(char* string1, char* string2) 获取上面的函数1返回的字符串,并将其与main提供的第二个输入字符串连接起来。

对于这个,我有:

char* concatenate(char* string1, char* string2)
{
char* concatenated = malloc(strlen(string1)+strlen(string2)+1);
strcpy(concatenated, string1);
strcat(concatenated, string2}
return concatenated
}

说到函数1,我理解argv是一个指针的指针,我真的不知道如何在运行时从那里转到字符串。对不起,如果这个问题有点荒谬。

谢谢!

2 个答案:

答案 0 :(得分:1)

argv指向一个字符指针数组。每个字符指针指向一个c字符串。

char* third_string = argv[2] ;

char second_char_of_third_string = argv[2][1] ;

extractCharacters()应该改为使用字符指针,就像concatenate()

答案 1 :(得分:0)

请尝试这个解决方案:

char* concatenate(char* string1, char* string2)
{
    char* concatenated = (char*)malloc(strlen(string1)+strlen(string2)+1);
    sprintf(concatenated, "%s%s", string1, string2);
    return concatenated;
}

int main(char* argv[], int argc )
{
   char string1[100];
   char* string2 = "stice";
   strncpy(string1, argv[1], 2);
   char* string3 = concatenate( string1, string2);

}