我是学习 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/