C:从命令行读取两个文件的有效方法

标签 c

我是学习 C 语言的新手,在使用 gcc 编译代码后需要帮助从命令行读取多个文件。例如,如果我的代码已编译且输出为 a.out,则它应该像 a.out FILEA FILEB 一样运行,到目前为止,这就是我所拥有的,但是当我尝试添加另一个循环来读取另一个文件时FILEB 我遇到段错误,这个错误来自哪里?

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

void evalFile(char *s);
int main(int argc, char* argv)
{
  FILE *fp1, *fp2;
  if (argc != 3)
  {
    printf("./progName fileName1.csv fileName2.txt");
  }

  fp1 = fopen(argv[1], "r");
  fp2 = fopen(argv[2], "r");

  while(fgets(buffer, sizeof(buffer), fp1) != NULL)
  {
     if(buffer[0] == "#")
        continue;
     evalFile(buffer);
  }
}

void evalFile(char *s)
{
  char *token, *del="(,)";
  token = strtok(s, del);
  while(token != NULL)
  {
    token = strtok(NULL, del);
  }
}

最佳答案

你写道:

fp1 = fopen(argc[1], "r");
fp2 = fopen(argc[2], "r");

您的命令行参数存储在argv中,而不是argc中!
它们非常不同。

你想要

fp1 = fopen(argv[1], "r");  // argv, not argc
fp2 = fopen(argv[2], "r");  // argv, not argc

关于C:从命令行读取两个文件的有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25069557/

相关文章:

c - 为什么有时不需要在 C 中分配内存?

C 中整数到字符数组的转换

c - 将结构指针设置为等于另一个结构的地址

c - 如何在 strcmp() 函数中使用字符数组

c - OR 表示法和位移位why = 符号why 1

c 编程结构到头文件

c - 为什么 arm-none-eabi-gcc 不搜索我的自定义 _start 符号?

c - 为什么这些构造使用增量前和增量后未定义的行为?

c - Arduino Char 数组映射重叠

并发线程和数据竞争