【问题标题】:How to give incremented numbers when printing data in file?在文件中打印数据时如何给出增量编号?
【发布时间】:2020-10-10 17:52:09
【问题描述】:

在这段代码中,我遇到了问题,但不知道如何解决。我需要用递增的数字在文件中打印结果。我使用了line++,但它只能在循环中工作,我希望如果有人打印了一些东西,那么再次打印应该需要增加行号。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define STRING_LEN 200

int main(){
  FILE * fp1 = fopen("file.csv", "a");
  char string[STRING_LEN];
  int line = 1;

  printf("Enter the string: ");
  fgets(string, sizeof(string), stdin);

  fprintf(fp1, "%d,%s\n", line++, string);

  return 0;
}

【问题讨论】:

  • 不清楚你想做什么。您是否希望下次有人输入新行时,行号应该是前行号 + 1。我认为使用当前代码可能总是 1?
  • fgets() 将读取的换行符存储到缓冲区中。因此,您不需要在最后一个 fprintf() 中添加额外的 '\n'。
  • @DeepakPatankar 你是对的。如果有人再次输入数据,我想输入 1 plus。
  • 同样,您需要文件中最后一行的行号,然后您可以将int line = 1 更改为该行号。获取此行号的一种方法是geeksforgeeks.org/c-program-count-number-lines-file

标签: c increment


【解决方案1】:

看起来你需要这样的东西:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define STRING_LEN 200

int main(){
  char string[STRING_LEN];
  int line;
  FILE * fp1 = fopen("file.csv", "a+r");

  fscanf(fp1, "%d,%s\n", &line, string);
  printf("Enter the string: ");
  fgets(string, sizeof(string), stdin);
  fprintf(fp1, "%d,%s", ++line, string);
  
  fclose(fp1);
  return 0;
}

首先,我们从文件中读取行,解析它并获取line 值,然后写回增加的值。并且不要忘记关闭文件。

【讨论】:

    猜你喜欢
    • 2021-08-21
    • 2023-03-10
    • 2018-05-18
    • 1970-01-01
    • 2018-05-30
    • 1970-01-01
    • 2022-01-25
    • 2021-03-26
    • 1970-01-01
    相关资源
    最近更新 更多