【发布时间】:2021-05-05 16:39:12
【问题描述】:
我一直在解决这个问题:
编写一个程序,将两个文件中的行交替合并并将结果写入新文件。如果一个文件的行数少于另一个,则应将较大文件中的剩余行简单地复制到目标文件中。
这是我的代码:
#include <stdio.h>
#include <stdlib.h>
int main(){
FILE *fp;
FILE *fp1;
FILE *fp2;
fp=fopen("sample3.txt","r");
fp1=fopen("sample4.txt","r");
fp2=fopen ("output.txt","w");
char a[100];
char b[100];
int *p;
int *c;
while (1){
if (p=fgets(a,100,fp)!=NULL){
fputs (a,fp2);
}
if (c=fgets(b,100,fp1)!=NULL){
fputs (b,fp2);
}
if (c==NULL && p==NULL){
break;
}
}
return 0;
}
虽然 output.txt 文件包含来自这两个文件的字符串,但编译器显示 [警告] 在以下两行中赋值使指针从整数而不进行强制转换:
如果 (c=fgets(b,100,fp1)!=NULL)
和
如果 (p=fgets(a,100,fp)!=NULL)
有人可以帮忙吗?
【问题讨论】:
-
警告就是这样,他们基本上是在说这是模棱两可和/或潜在的危险,并且可能会或可能不会按您预期的方式工作。 -- 如果您想要一个好的答案,请发布确切的警告消息并在源代码中标记它适用的行。
-
@500-InternalServerError 查看已编辑的问题
-
是的,所以
fgets返回一个char*,那你为什么将c和p声明为int*? -
你为什么要使用 fgets?最好使用
fgetc完成此操作。一次读一个字符。当您看到\n时,请更改输入源。
标签: c file pointers compiler-warnings