【发布时间】:2013-04-23 03:43:04
【问题描述】:
我正在尝试编写一个函数,该函数根据给定的数字从文本文件中打印特定行。例如,假设文件包含以下内容:
1 hello1 one
2 hello2 two
3 hello3 three
如果给定的数字是'3',函数将输出“hello3 three”。如果给定的数字是“1”,则函数输出将为“hello1 one”。
我对 C 很陌生,但到目前为止,这是我的逻辑。
我想第一件事是首先,我需要在文件中找到字符“数字”。然后呢?如何在不包括数字的情况下写出线路?我什至如何找到“数字”?我确信这很简单,但我不知道该怎么做。这是我目前所拥有的:
void readNumberedLine(char *number)
{
int size = 1024;
char *buffer = malloc(size);
char *line;
FILE *fp;
fp = fopen("xxxxx.txt", "r");
while(fp != NULL && fgets(buffer, sizeof(buffer), fp) != NULL)
{
if(line = strstr(buffer, number))
//here is where I am confused as to what to do.
}
if (fp != NULL)
{
fclose(fp);
}
}
任何帮助都将不胜感激。
【问题讨论】:
-
根据问题定义,我认为无论内容如何,您都想要第三行。但是,您的解决方案似乎找到了包含“3”的行。你要哪一个?
-
@Arun,我想他想要第 3 行,但他写了一个结果出乎意料的代码来实现这个目标。
-
对不起,如果参数是'1',那么它将是“hello1 one”等等。如果参数是'2',那么将打印“2”之后的同一行的内容。
-
一行可以
hello5 six吗?如果是这样,当输入为 5 或 6 时会发生什么? -
@Anish 如果在文件中找不到数字 5 或 6,则肯定会出错。但是,如果文件中包含编号为 5 或 6 的行,则将打印该行(不带标记)。我希望这是有道理的。