2012-10-19 59 views
1

我所试图做的就是添加一个命令行参数转换为一个数组作为indvidual字符。 因此,当用户运行该程序./program bacon“腊肉”被存储在一个数组添加命令行字符串数组是不同的字符

array k[]= {'b', 'a', 'c', 'o', 'n'}; 

我希望我解释的不够好我是新来编程。

+0

显示您的代码。 – Musa

回答

0

所以,我知道你是编程新手,但肯定这看起来很熟悉,不是吗?

int main (int argc, char **argv) { 
    // ... 
} 

char **argv是一个指向字符指针,但是你的目的,你可以认为这是char *argv[]相当。所不同的是微妙的,但值得一提的,因为这需要注意的是要了解字符串C. char *argv[]的工作是显式类型为char指针数组的方式是至关重要的,而char **argv可能是一个数组,但你不会知道,直到你尝试像这样访问它。鉴于这是您的主要功能,可以认为这将始终适当地实例化。

无论如何,移动过去的切线,我们有我们的主要功能null结尾的字符串的char **argv阵列。从你的问题,我可以看到一条我们应该遵循的简单路径。我会假定只有一个参数是可以预料的(否则你应该能够执行处理不同情况的案例)。

  1. 获取传递给我们程序的第一个参数(argv[1])的长度。
  2. argv[1]中的字符填充数组。
  3. 打印出我们的数组,以便我们知道它的工作原理。

在我们main功能,我们的argv[1]长度存储n,并宣布我们的规模n的阵列。然后,我们遍历第一个字符串,逐个字符,并将每个字符存储到我们数组的下一个打开的插槽中。最后,我们重复我们的循环并打印出我们阵列中的每一项,以便我们验证它的工作原理。

int main (int argc, char *argv[]) { 
    int n = strlen(argv[1]); 
    char arr[n]; 

    int i; 
    for (i = 0; i < n; i++) 
    arr[i] = argv[1][i]; 

    for (i = 0; i < n; i++) 
    printf("%c ", arr[i]); 

    printf("\n"); 
} 

希望这会有所帮助。干杯。

+0

谢谢,这帮助我了解到底发生了什么,我得到了它的工作! – Yamaha32088

1

实际上,“培根”将通过argv的1这是一个char *被传递到你和一个空结束的字符串。现在你想创建的数组也应该是一个char数组。

按道理你应该只被复制到新阵列输入(argv的1)。

您可以使用字符串操作功能,如strcpystrncpy

注:我并没有直接添加代码在这个解决方案,这将是更好地为你自己尝试一下。