在C中添加文件中的行号

时间:2013-07-21 12:36:17

标签: c

我正在尝试使用C语言中的文件,我有一个无法通过的碰撞。我一整天都在寻找信息,但我似乎无法找到我想要的东西。我想在文件中对行进行编号。例如,如果我输入有关某本书的信息(例如:姓名,播出日期和身份证),我希望在我的档案中有这样的内容:

1. Name:Dave Air-Date:1997 id:123

我希望自己更新。假设我关闭程序并再次运行,计数应从2开始。

我唯一的问题是为线条编号。有人能指出我正确的方向如何做到这一点,或者向我展示一个示例源代码?

2 个答案:

答案 0 :(得分:1)

您可以逐个处理每个字符,并在遇到回车符(\n)时递增您在字符前打印的计数器。

在伪代码中:

lineNumber = 1;
Open the file
While ((c = read a character) is not EOF)
    If (c is \n)
        Print "lineNumber", then increment it
    Print c
End while
Close the file

答案 1 :(得分:0)

为时已晚,但希望对您有所帮助。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main() {
  /* user input */
  char text[50];
  char res[100] = "";
  printf("Enter a short story (<100 characters): ");
  char ch;
  char *ptr = text;
  while ((ch = getchar()) != EOF) {
    *ptr++ = ch;
  }
  printf("\nYou've entered this text:\n");
  printf("%s\n", text);

  /* append and create a new text */
  strcat(res, "0: ");
  char *qtr = text;
  int i = 1;
  while (*qtr != '\0') {
    if (*qtr != '\n') {
      char temp[2];
      sprintf(temp, "%c", *qtr);
      strcat(res, temp);
    } else {
      char temp[5];
      sprintf(temp, "\n%d: ", i++);
      strcat(res, temp);
    }
    qtr++;
  }

  printf("\nLine number added: \n");
  printf("%s\n", res);

  return 0;
}