我是C语言的新手,并且对指针和动态内存分配有些困惑。我想做的是从命令行参数中读取并将其存储在动态内存分配中。然后将它们打印出来。例如,如果我键入./rpd 4 3 2 3 8,则argv [1](4)应减1,其他3个值(3、2、3、8)应紧随其后。输出应如下所示:
人1有3辆车。
人2有2辆车。
第3个人有3辆车。
第4个人有8辆车。
我的代码是:
#include <stdio.h>
int main(int argc, char *argv[]) {
/** argc is number of arguments at command line*/
/** argv[] is an array of pointers to character strings
i.e. argv 1 points to argc 1 */
int numberOfCars;
char *person;
int i;
int j;
// Allocate the size of the array for each element of char
person = malloc(sizeof(numberOfCars) *argc);
for(i = 2; i < argc; i++) {
/** Convert char to int */
numberOfCars = atoi(argv[i]);
person = atoi(argv[1]);
if(person > 0){
for(j = 2; j < person; j--) {
printf("Person %d has %d cars \n", person--, numberOfCars);
}
} else {
/** DO NOTHING */
}
}
return person;
}
如果这让我有些困惑(或天真),我感到抱歉。但是我对这种语言非常陌生,因此我仍在努力掌握所有内容。
非常感谢您的帮助:)
最佳答案
尝试这样的事情:
#include <stdio.h>
int main(int argc, char *argv[]) {
/** argc is number of arguments at command line*/
/** argv[] is an array of pointers to character strings
i.e. argv 1 points to argc 1 */
int numberOfCars;
int i;
for(i = 1; i < argc; i++) {
/** Convert char to int */
numberOfCars = atoi(argv[i]);
printf("Person %d has %d cars \n", i, numberOfCars);
}
return 0;
}
然后根据您的需要进行调整。您不需要为第一个输入参数指定人数,因为这是为每个人指定的汽车数量所暗示的。