[英]Sorting from two text files c
我有两个排序的序列,一个在data1.text上,另一个在data2.txt中,都包含20个排序编号。 我需要创建代码sort.c来从两个txt中读取数字,同时将它们进行比较,并在sort.txt中输出较小的数字,因此它属于kinnda合并sort)
那是我的代码:
#include <stdio.h>
int main(int argc,char *argv1[],char *argv2[],char *argv3[])
{
char *f1 = argv1[1];// taking filename1 from args
char *f2 = argv2[1];// taking filename2 from args
char *f3 = argv3[1];// taking filename2 from args
FILE *fp1,*fp2,*fp3;
fp1 = fopen(f1,"r");
fp2 = fopen(f2,"r");
fp3 = fopen(f2,"w");// sort.txt file so 'w'
int num1,num2;
fscanf (fp1, "%d", &num1);
fscanf (fp2, "%d", &num2);
while (!feof(fp1) && !feof(fp2)) {
if (num1<num2)
{
fprintf(fp3,"%d\t",num1);// print num 1
fscanf (fp1, "%d", &num1); // read num1
}
else{
fprintf(fp3,"%d\t",num2);
fscanf (fp2, "%d", &num2); // read num2
}
}
if (!feof(fp1))
{
while (!feof(fp1))
{
fprintf(fp3,"%d\t",num1);// print num 1
fscanf (fp1, "%d", &num1); // read num1
}
}
else
{
while (!feof(fp2))
{
fprintf(fp3,"%d\t",num2);
fscanf (fp2, "%d", &num2); // read num2
}
}
fclose(fp1);// closing file f1
fclose(fp2);// closing file f2
fclose(fp3);// closing file f2
return 0;
}
它显示分段错误=(
你的main
错了。 应该是int main(int argc, char **argv)
。 然后代替
char *f1 = argv1[1];// taking filename1 from args
char *f2 = argv2[1];// taking filename2 from args
char *f3 = argv3[1];// taking filename2 from args
就像是
char *f1 = argv[1];// taking filename1 from args
char *f2 = argv[2];// taking filename2 from args
char *f3 = argv[3];// taking filename2 from args
但是在这些行之前,您应该检查argc
以获取正确数量的参数。 您可能是说fp3 = fopen(f3,"w");
而不是fp3 = fopen(f2,"w");
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.