gpt4 book ai didi

c - 在 C 中通过数组导航的指针问题

转载 作者:太空宇宙 更新时间:2023-11-04 07:01:58 24 4
gpt4 key购买 nike

我想创建一个 vector (动态分配),其中 vector 的每个元素都从命令行中的第三个参数开始获取。

我是这样写的:

#include <stdio.h>
#include <stdlib.h>

int main(int argn, char* argc[]) {
if (argn < 4) {
printf("Error: invalid parameter number. \n");
return 0;
}
float min = atof(argc[1]), max = atof(argc[2]), *v, *k;
int dim = argn-3;
char **p;
v = malloc(dim*sizeof(float));
k = v;
for (p = argc+3; p < argc+dim; p++) {
*k = atof(*p);
k++;
}
for (k = v; k < v+dim; k++) {
printf("%3.f ",*k);
}
return 0;
}

问题是似乎只有第一个参数是从命令行中获取的,而其他的则不是。

示例:我启动 [ProgramName] 25 30 27 28 29 32

它返回 27.0 0.0 0.0 0.0,但它应该返回 27.0 28.0 .29.0 32.0

为什么我的代码不起作用?

对于最后的语法错误,我很抱歉,我不是英语。

最佳答案

你写:

int dim = argn-3;
...
for (p = argc+3; p < argc+dim; p++) {
...
}

假设 argn==5 ,然后是 dim==2 ,循环归结为:

for (p = argc+3; p < argc+2; p++) {
...
}

永远不会运行。

附带说明一下,通常使用 argc 和 argv 作为 main 的参数。如果你遵循这一点,你的代码对其他人来说将更具可读性,而其他人的代码对你来说也将更具可读性。此外,你忘了打印换行符。

关于c - 在 C 中通过数组导航的指针问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36987877/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com