c - 如何从 C 中的 **argv 派生 argc

标签 c

我有一个任务不允许我编辑主程序,但可以释放 argv 副本的内存。到目前为止,我找到的唯一解决方案是使用 argc 来确定需要释放多少 block 。但是,argc 不是释放程序的输入,而是 argv 的副本。有没有办法从 **argv 派生 argc?

最佳答案

这应该可以解决问题:

#include <stdio.h>

int main(int argc, char ** argv){
    int count = 0;

    for(int i = 0; 1; i++)
        if(argv[i] == 0) break;
        else count++;

    printf("Argc: %d\n", count);
}

或者以紧凑的方式(感谢 chqrlie ):

#include <stdio.h>

int main(int argc, char **argv) {
    int count;
    for (count = 0; argv[count] != NULL; count++)
        continue;
    printf("Argc: %d\n", count);
}

关于c - 如何从 C 中的 **argv 派生 argc,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52470579/

相关文章:

c - 使用宏有效获取结构成员

C 研究元音和辅音 fork()

c - 链接列表 - 访问冲突......在哪里?

c - 为什么 printf() 在 Windows 上打印这个神秘的额外文本?

c - 在 C 中用空值对数组进行冒泡排序

c - 在 RobotC 中添加多头时的奇怪行为

glibc 中的更改不起作用

自定义读行功能

c - 让退格键在 curses 屏幕中工作

c - 通过 epoll 使用多个文件描述符