我的代码是:
#include <stdio.h>
#include <stdlib.h>
int main (int argc, char *argv[]){
int i = 0;
int count = argc - 1;
char *numbers = malloc(count * sizeof(char));
for(i = 1 ; i <= argc ; i++){
printf("%s ", argv[i]);
numbers[i] = argv[i];
}
printf ("%s \n", numbers);
return 0;
}
出现的错误是:
tamal @ baba-desktop:〜/ Desktop / c $ cc experiment.c -o experiment
experiment.c:在函数'main'中:
experiment.c:10:16:警告:赋值从指针生成整数 没有演员[默认启用]
我在第10行尝试了 numbers[i] = &(argv[i]);
。结果仍然相同。
答案 0 :(得分:1)
在您的代码中,numbers[i]
的类型为char
,而argv[i]
的类型为char *
且两者不同。这就是警告出现的原因。
在第二种情况下,numbers[i] = &(argv[i]);
也是错误的,因为&(argv[i]);
也不是char
。
最重要的是,你有一个char
指针numbers
,当你在其上使用索引运算符时,你会得到char
的个体内容,即所有{{1}属于numbers[i]
类型。您需要为其指定另一个char
值。
答案 1 :(得分:0)
您必须取消引用argv两次以获取char值numbers[i] = *(*(argv + i));
答案 2 :(得分:0)
应该这样做,好像有两个以上的参数:
int count = argc - 1;
char **numbers = (char **)malloc(count * sizeof(char*));
for(i = 0 ; i < argc ; i++){
printf("%s ", argv[i + 1]);
// Stores all arguments except "experiment"(i.e. exe file).
numbers[i] = argv[i + 1];
}
for(i = 0; i <= count; i++){
printf("%s\n", numbers[i]);
}
如果只有两个论点那么它应该简单地完成:
char *number = (char *)malloc(1*sizeof(char));
// Store argument other than provided .exe file i.e. "experiment"
number = argv[1];
printf("%s\n", number);