#include<stdio.h> #include<stdlib.h> #include<string.h> void main() { FILE *file1,*file2; int num1,num2; int set1[80],set2[80]; int i,j,flag; file1=fopen("a.txt","r"); file2=fopen("b.txt","r"); i=0; while(fscanf(file1,"%d",&num1)!=EOF) { set1[i]=num1; i++; } j=0; while(fscanf(file2,"%d",&num2)!=EOF) { set2[j]=num2; j++; } fclose(file1); fclose(file2); for(i=0;i<strlen(set1);i++) { flag=0; for(j=0;j<strlen(set2);j++) { if(set2[j]==set1[i]) {flag=1; break;} } if(flag!=1) printf("%d\n",set1[i]); } }帮我判断这段代码是否正确
时间: 2024-03-22 09:39:10 浏览: 58
这段代码有一些问题,需要进行修正:
1. 在比较字符串长度时,应该使用数组元素个数,而不是 `strlen()` 函数。
2. 在比较两个数组元素是否相等时,应该使用 `==`,而不是 `strcmp()` 函数。
3. 应该在 `main()` 函数上加上返回值类型 `int`。
修正后的代码如下:
```
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() {
FILE *file1, *file2;
int num1, num2;
int set1[80], set2[80];
int i, j, flag;
file1 = fopen("a.txt", "r");
file2 = fopen("b.txt", "r");
i = 0;
while (fscanf(file1, "%d", &num1) != EOF) {
set1[i] = num1;
i++;
}
j = 0;
while (fscanf(file2, "%d", &num2) != EOF) {
set2[j] = num2;
j++;
}
fclose(file1);
fclose(file2);
for (i = 0; i < sizeof(set1) / sizeof(int); i++) {
flag = 0;
for (j = 0; j < sizeof(set2) / sizeof(int); j++) {
if (set2[j] == set1[i]) {
flag = 1;
break;
}
}
if (flag != 1)
printf("%d\n", set1[i]);
}
return 0;
}
```
阅读全文