【发布时间】:2012-11-29 13:41:25
【问题描述】:
我最近开始学习 C,如果我的问题非常基本或不清楚,敬请见谅。
我将 3 个命令行值传递给我的程序。 (类型,长度,VAL)。使用这些值,我想在 TYPE 类型和长度 LENGTH 的堆上创建一个数组,并将所有元素初始化为 VAL。比如
float 8 4 : 将创建一个包含 8 个元素的浮点数组,每个元素的值为 4。
char 4 65 : 将创建一个包含 4 个元素的 char 数组,每个元素的值都为 'A'。
确定长度是直截了当的。但我正在努力确定如何初始化指向数组和 VAL 的指针。
以下是我迄今为止尝试过的(未成功)。我正在初始化一个 char 指针,但是我知道这是不正确的,因为我可能需要一个 float 或 int 指针。我还使用基于 TYPE 的第一个字符的 switch 语句,对我来说这似乎很 hacky。
int main (int argc, char *argv[]){
int LENGTH;
char *ptr;
LENGTH = atoi ( argv[2] );
switch( *argv[1] ){
case 'f':
printf("Type is float\n");
ptr = (float *)malloc(LENGTH * sizeof(float));
break;
case 'c':
printf("Type is char\n");
ptr = (char *)malloc(LENGTH * sizeof(char));
break;
case 'i':
printf("Type is int\n");
ptr = (int *)malloc(LENGTH * sizeof(int));
break;
default:
printf("Unrecognized type");
break;
}
while( i < arrayLength ){
*ptr[i] = *argv[3];
i++;
}
free ( ptr );
return 0;
}
我还可以看到问题的初始化元素存在问题。初始值取决于类型,因此需要进行转换。
我想知道的是,在事先不知道 TYPE 的情况下,如何创建指针或初始化值?我可能完全从错误的方向看待这个问题,所以任何建议都将不胜感激。
谢谢
【问题讨论】:
-
为什么?您真正想做什么?创建未知类型的数组不是很有用。您需要先了解类型,然后才能知道哪些操作可用。
-
这是我在课程中发现的一个问题。我认为创建未知类型的数组没有用,这意味着我处理问题的方式本身是不正确的。
标签: c arrays pointers malloc command-line-arguments