Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用C语言在文件中添加行号_C - Fatal编程技术网

用C语言在文件中添加行号

用C语言在文件中添加行号,c,C,我正在努力掌握使用C语言处理文件的技巧,但我遇到了一个无法克服的问题。我整天都在寻找信息,但似乎找不到我要找的东西。我想给文件中的行编号。例如,如果我键入关于一本书的信息(比如:名称、播出日期和id),我希望在我的文件中出现如下内容: 1. Name:Dave Air-Date:1997 id:123 我希望它能自我更新。假设我关闭程序并再次运行,计数应从2开始 我唯一的问题是编号。有人能给我指出正确的方向吗,或者给我看一个示例源代码吗?您可以一个接一个地处理每个字符,并在遇到回车符时在字符前

我正在努力掌握使用C语言处理文件的技巧,但我遇到了一个无法克服的问题。我整天都在寻找信息,但似乎找不到我要找的东西。我想给文件中的行编号。例如,如果我键入关于一本书的信息(比如:名称、播出日期和id),我希望在我的文件中出现如下内容:

1. Name:Dave Air-Date:1997 id:123
我希望它能自我更新。假设我关闭程序并再次运行,计数应从2开始


我唯一的问题是编号。有人能给我指出正确的方向吗,或者给我看一个示例源代码吗?

您可以一个接一个地处理每个字符,并在遇到回车符时在字符前面增加一个计数器(
\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

太晚了,但我希望能有所帮助

#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;
}
#包括
#包括
#包括
int main(){
/*用户输入*/
字符文本[50];
字符大小[100]=“”;

printf(“输入一个简短的故事(如果您在编辑时正在查找行号,
vim
允许您键入
:set nu
将行号添加到显示中,并
:set nonu
将其关闭。Unix平台上有
pr
nl
等程序对文件中的行进行编号(您可以使用
sed
或类似的方法来删除数字)。如果您有一个练习要做,这意味着在读取行时对行进行编号,那么您可以使用
fgets()
来读取行,并且在输出行时打印数字是很简单的。