Я пытаюсь написать функцию, которая печатает определенную строку из текстового файла на основе указанного числа. Например, предположим, что файл содержит следующее:Как извлечь определенную пронумерованную строку из текстового файла? (C)
1 hello1 one
2 hello2 two
3 hello3 three
Если задано номер «3», то функция выведет «hello3 три». Если указанным числом является «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-я строка независимо от содержания. Однако ваше решение, похоже, находит строку, содержащую «3». Какой вы хотите? – Arun
@Arun, я думаю, ему нужна 3-я строка, но он написал код с неожиданным результатом для достижения этой цели. – MYMNeo
К сожалению, если параметр равен «1», это будет «hello1 one» и т. Д. Если параметр равен «2», будет напечатано содержимое той же строки после «2». –