我正在努力通过添加功能来清理我的代码,而且我遇到了一些我似乎无法弄清楚的东西。我有,我认为,大多数是正确的代码,它运行时没有我试图实现的功能。
无论如何,我的main方法需要4个参数,命令本身,两个输入和一个输出。
int main (int numFiles, char *filenames[]){
我有两个功能和两个结构
int compareNames(struct Strings,struct Files);
int fileAssignment(int numFiles, char arraypointer[], struct Files);
struct Files Data;
struct Strings inputData;
我在将char * filenames []传递给我的函数
时遇到问题 fileAssignment(numFiles, *filenames, Data); // *filenames is the problem
函数看起来像这样。
int fileAssignment(int arguments, char array[],struct Files Data) // 2ed argument
{
if ( arguments !=4 ){
printf(" Need two input files and one output file.");
return 4;
}
if ( (Data.input_file1 = fopen (array[1], "r")) == NULL ) {
printf("Can't open file 1 for reading, it either doesn't exist, or
was typed incorrectly.");
return 1;
代码不会编译此块。数组[i]是一个转换为int的指针。如果有人想修补它,我会很乐意发布所有代码。我在想我的问题是正确传递数组然后正确调用它。不确定,有什么想法吗?
答案 0 :(得分:1)
您的fileAssignment
可以这样实现:
int fileAssignment(int numFiles, char *files[],struct Files Data) // 2ed argument
{
for(int i=1;i<numFiles;i++)//the files[0] is the name of the command
{
const char *cur_file = files[i];
...
}
}
答案 1 :(得分:0)
您正在将单个文件传递给该函数,然后将单个字符传递给fopen,传递所有文件然后访问每个文件
int fileAssignment(int numFiles, char *array[], struct Files);
...
fileAssignment(numFiles, filenames, Data);