C 合并txt文件中的字符串
目标是合并file1和file2中的字符串,但每次我尝试这样做时,只有file2的第一句话合并到file1。我不明白它为什么这么做,而且我对编程还不熟悉,刚刚开始使用文件指针C 合并txt文件中的字符串,c,string,file,C,String,File,目标是合并file1和file2中的字符串,但每次我尝试这样做时,只有file2的第一句话合并到file1。我不明白它为什么这么做,而且我对编程还不熟悉,刚刚开始使用文件指针 #include <stdio.h> #include <string.h> int main (int argc, char *argv[]){ FILE *fin1 = fopen(argv[1],"r"); FILE *fin2 = fopen(argv[2],"r"); F
#include <stdio.h>
#include <string.h>
int main (int argc, char *argv[]){
FILE *fin1 = fopen(argv[1],"r");
FILE *fin2 = fopen(argv[2],"r");
FILE *fout = fopen(argv[3],"w");
char sentence1[1000];
char sentence2[500];
fgets(sentence1,1000,fin1);
fgets(sentence2,500,fin2);
strcat(sentence1,sentence2);
fprintf(fout,"%s",sentence1);
printf("%s",sentence2);
fclose(fin1);
fclose(fin2);
fclose(fout);
return 0;
}
#包括
#包括
int main(int argc,char*argv[]){
文件*fin1=fopen(argv[1],“r”);
文件*fin2=fopen(argv[2],“r”);
文件*fout=fopen(argv[3],“w”);
字符语句1[1000];
char语句2[500];
fgets(第11000句,fin1);
fgets(第2500句,第2页);
strcat(第1句、第2句);
fprintf(fout,“%s”,第1句);
printf(“%s”,第2句);
fclose(fin1);
fclose(fin2);
fclose(fout);
返回0;
}
当内容到达文件末尾或新行时,
fgets
函数停止解析内容。这就是为什么它只读取文件的第一行。您可以查看完整的文档
在检查fgets
的结果时,您可以通过循环读取文件的每一行,例如:
char sentence[500] = "";
while (fgets(aux,sizeof(aux),fin) != NULL)
strcat(sentence, aux);
请注意,这可能不是唯一的解决方案,您可以找到其他想法。无需使用
strcat()
,顺便说一句。只需使用fprintf(fout,“%s%s”,第1句,第2句)代码>您还应该包括结果输出文件的内容。您应该在其中获得文件2的第一行,而不是第二行。是的,对不起,只有第一句话正在打印,而不是第二句。我删除了strcat(),但它仍然不起作用。您已经了解了循环,是吗?因为您可能希望将fgets
和fprintf
放在一个循环中。调用fgets
只会得到一行输入。要获得第二行,您必须再次调用fgets
。。谢谢。对于这种情况,可能更好的解决方案是避免串联,顺便说一句,语句
指向长度为1的只读缓冲区<代码>strcat(句子,辅助)
将导致未定义的行为。抱歉。忘了在我的代码前面添加什么。我会编辑它。