fgets()不保存c中的第一行
fgets() not saving the first line in c
我试图在加载时从文件中删除一行。
在 data_f 中打印数据工作正常,但是当我使用 fseek 将指针移动到文件开头并扫描一行时,它会扫描最后一行并存储在 s 中。
#include<stdio.h>
#include<stdlib.h>
int main(int argc, char **argv)
{
FILE *fp1 = fopen("data_f", "w");
FILE *fp = fopen(argv[1], "r");
char s[100];
int c=1, chk = atoi(argv[2]);
while(fgets(s, 100, fp)) //counting number of lines
{
if(c != chk)
fputs(s, fp1);
c++;
}
fseek(fp1, 0, SEEK_SET);
fgets(s, 100, fp1);
printf("%s\n", s);
}
我原以为 fgets 会存储 data_f 的第一行,但它会存储最后一行,为什么?
您正在尝试读取以只写模式打开的文件。
FILE *fp1 = fopen("data_f", "w");
.
.
.
fgets(s, 100, fp1);
以"w+"模式打开文件以允许读写。
您可以在此处阅读有关 fopen(3) 的更多信息:https://linux.die.net/man/3/fopen
我试图在加载时从文件中删除一行。
在 data_f 中打印数据工作正常,但是当我使用 fseek 将指针移动到文件开头并扫描一行时,它会扫描最后一行并存储在 s 中。
#include<stdio.h>
#include<stdlib.h>
int main(int argc, char **argv)
{
FILE *fp1 = fopen("data_f", "w");
FILE *fp = fopen(argv[1], "r");
char s[100];
int c=1, chk = atoi(argv[2]);
while(fgets(s, 100, fp)) //counting number of lines
{
if(c != chk)
fputs(s, fp1);
c++;
}
fseek(fp1, 0, SEEK_SET);
fgets(s, 100, fp1);
printf("%s\n", s);
}
我原以为 fgets 会存储 data_f 的第一行,但它会存储最后一行,为什么?
您正在尝试读取以只写模式打开的文件。
FILE *fp1 = fopen("data_f", "w");
.
.
.
fgets(s, 100, fp1);
以"w+"模式打开文件以允许读写。
您可以在此处阅读有关 fopen(3) 的更多信息:https://linux.die.net/man/3/fopen