更新时间:2023-11-27 22:21:58
您需要修改:
而(与fgets(内容,strlen的(内容),FP1)!= NULL)
您需要的的sizeof
阵列内容
,而不是长度。
而(与fgets(内容的sizeof(内容),FP1)!= NULL)
就算你初始化内容
使用前的strlen()
将返回0,你会读出什么从文件
另外,如果你希望写你需要新的文件时重新读取输入文件或者 FCLOSE()
输入文件和 fopen()函数
,或退()
了。
I'm writing a basic program that copies a string from an existing text file and copies the text into a new text file. I'm almost there but I'm having a few small issues. First, I output the line of text to the screen after copying and it's giving me 3 random characters after the string. I want to know why this is happening. Also, the program is creating the new text file but not putting the string into the file.
Here's my code:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(void)
{
char content[80];
char newcontent[80];
//Step 1: Open text files and check that they open//
FILE *fp1, *fp2;
fp1 = fopen("details.txt","r");
fp2 = fopen("copydetails.txt","w");
if(fp1 == NULL || fp2 == NULL)
{
printf("Error reading file\n");
exit(0);
}
printf("Files open correctly\n");
//Step 2: Get text from original file//
while(fgets(content, strlen(content), fp1) !=NULL)
{
fputs (content, stdout);
strcpy (content, newcontent);
}
printf("%s", newcontent);
printf("Text retrieved from original file\n");
//Step 3: Copy text to new file//
while(fgets(content, strlen(content), fp1) !=NULL)
{
fprintf(fp2, newcontent);
}
printf("file created and text copied to it");
//Step 4: Close both files and end program//
fclose(fp1);
fclose(fp2);
return 0;
}
You need to change:
while(fgets(content, strlen(content), fp1) !=NULL)
you need the sizeof
the array content
, not the length.
while(fgets(content, sizeof(content), fp1) !=NULL)
Even if you had initialised content
before using it strlen()
would return 0 and you would have read nothing from the file.
Also, if you want to re-read the input file when writing the new file you need to either fclose()
the input file and fopen()
it or rewind()
it.