gpt4 book ai didi

c - 当我在文件中写入内容时,它会在 C 中的文件顶部添加空行。如何修复它

转载 作者:行者123 更新时间:2023-11-30 19:15:04 26 4
gpt4 key购买 nike

#include <stdio.h>
#include <stdlib.h>
void main()
{

FILE *file;

int size=0,len,i=0;

char *str,str2,filename[20];

printf("enter the filename :");
scanf("%s",filename);

//------------------For Write data in File------------------//
file = fopen(filename,"w");
//fseek(file,0L,2);
printf("input data:");
while((str2=getchar())!= 27)
{
putc(str2,file);
}
fclose(file);

//------------------For Read data in File------------------//
file = fopen(filename,"r");
fseek(file,0L,2);
len = ftell(file);
size=len;
fseek(file,0L,0);

str=(char *)malloc(len *sizeof(char));
while((str2=getc(file))!= EOF)
{
str[i]=str2;i++;
}
printf("\nFile Data:-\n");
for(i=0;i<size;i++)
{
printf("%c",str[i]);
}
fclose(file);
printf("\n");
}

最佳答案

您的程序本质上获取文件名作为输入,然后不断扫描输入数据,直到遇到 Esc。该程序的第一部分很重要,逻辑与此类似。

   char fname[20]; // Buffer to store File-Name
scanf("%s", fname);

scanf 手册说

s Matches a sequence of non-white-space characters; the next pointer must be a pointer to character array that is long enough to hold the input sequence and the terminating null character ('\0'), which is added automatically. The input string stops at white space or at the maximum field width, whichever occurs first.

这意味着所有内容都被扫描到字符缓冲区中,直到新行字符,该字符在输入缓冲区中保持不变。

当 getchar() 在 while 循环中看到这个剩余的 '\n' 时,就会扫描这个字符并继续写入文件。

while((str2=getchar())!= 27)
{
putc(str2,file);
}

因此

行中的第一个字符成为一行。

从输入缓冲区中删除不必要的字符

printf("enter the filename :");
scanf("%s%*c",filename);

关于c - 当我在文件中写入内容时,它会在 C 中的文件顶部添加空行。如何修复它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33143860/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com