c - 整数和文件名作为 C 中的两个命令行参数

标签 c

我想在 C 中将二维数组的大小和文件名作为命令行参数发送。

int main(int argc,char *argv[])

我知道这适用于单个参数,但我如何接受两个参数?

最佳答案

  • argc 告诉您参数的数量。
  • argv 是一个指向 C 风格字符串的 char 指针数组。

因此您可以通过以下方式简单地打印所有参数:

int main(int argc, char *argv[]) 
{
     int i;
     for (i=0; i<argc; ++i)
     {
         printf("%s\n", argv[i]);
     }
}

您可以使用 atoi 将字符串(的初始部分)转换为整数。

所以你可以这样做:

int main(int argc,char *argv[]) 
{
     char filename[100];
     int size = 0;
     int i;
     if (argc < 3)
     {
         printf("Too few arguments\n");
         return 0;
     }
     if (strlen(argv[1]) >= 100)
     {
         printf("File name too long\n");
         return 0;
     }
     strcpy(filename, argv[1]);
     size = atoi(argv[2]);
     if (size <= 0)
     {
         printf("Invalid size\n");
         return 0;
     }

     ....
     ....

     return 0;
}

请注意,通常不需要将文件名参数复制到另一个变量,除非您要以某种方式修改该值。

关于c - 整数和文件名作为 C 中的两个命令行参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42312470/

相关文章:

c - 移植到mingw时如何处理 "SIGQUIT"信号?

c - 这段 C 代码中有什么错误,为什么?

C - 逐行读取文件的最佳方法

c - malloc,当输入太高时,会失败,但当输入较低时,运行顺利(例如3)为什么?

C 结构体数组 结构体数组

java - 从 C/C++ JNI 传递参数到 Java 并获取修改后的值

c - waitpid() 返回值 0 以及 errno EINTR

c - 我怎样才能组装这个程序

c - C 代码的 Vala 泛型

c - 使用 SIMD,我如何有条件地仅移动 alpha channel 值为 255 的像素?