0
我的程序需要兩個文件,並將單詞排序爲參數,並將混合文件執行成一個單獨的文件,稱爲final_sorted.txt。程序成功運行並創建混合文件,甚至忽略重複的單詞,但是編譯器告訴我一些警告並沒有被刪除。警告從不兼容的指針類型傳遞'fopen'的參數1
[email protected]:~/Escritorio/mezclar (2)$ gcc meclapro.c -o mixmeclapro.c: In function ‘mix_files’:
meclapro.c:10: warning: passing argument 1 of ‘fopen’ from incompatible pointer type
/usr/include/stdio.h:249: note: expected ‘const char * __restrict__’ but argument is of type ‘char **’
meclapro.c:11: warning: passing argument 1 of ‘fopen’ from incompatible pointer type
/usr/include/stdio.h:249: note: expected ‘const char * __restrict__’ but argument is of type ‘char **’
meclapro.c: In function ‘main’:
meclapro.c:69: warning: passing argument 1 of ‘mix_files’ from incompatible pointer type
meclapro.c:6: note: expected ‘char **’ but argument is of type ‘char *’
meclapro.c:69: warning: passing argument 2 of ‘mix_files’ from incompatible pointer type
meclapro.c:6: note: expected ‘char **’ but argument is of type ‘char *’
這是我的代碼,這需要這需要在命令行參數
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void mix_files(char **file1, char **file2){
FILE *a1, *a2, *output;
char aux1 [10000],aux2 [10000];
a1 = fopen(file1, "r");
a2 = fopen(file2, "r");
ouput = fopen ("final.txt", "w+");
// read the first line of each file:
fscanf(a1,"%s",aux1);
fscanf(a2,"%s",aux2);
// loop, while !feof for both file
while(!feof(a1) && !feof(a2)) {
// Select the line to add
if(strcasecmp(aux1,aux2) < 0){
// add the line
fprintf(output,"%s\n",aux2);
//read the next line from aux2
fscanf(a2,"%s",aux2);
}
else if(strcasecmp(aux1,aux2)>0){
fprintf(salida,"%s\n",aux1);
fscanf(a1,"%s",aux1);
}
if (strcasecmp(aux1,aux2)==0){
//printf("repetidas\n");
fprintf(salida,"%s\n",aux1);
fscanf(a1,"%s",aux1);
fscanf(a2,"%s",aux2);
}
}
if(!feof(a1)){
while(!feof(a1)) {
fscanf(a1,"%s",aux1);
fprintf(salida,"%s\n",aux1);
}
}
if(!feof(a2)){
while(!feof(a2)) {
fscanf(a2,"%s",aux2);
fprintf(salida,"%s\n",aux2);
}
}
}
int main(int argc, char *argv[]){
mix_files(argv[2], argv[1]);
return(0);
}
我想有人幫助我發現了警告的原因,我怎麼能解決,在此先感謝您的回答,對不起我的英語