2014-01-29 2 views
0

Так я дал упражнение для работы на: пользователь ввел номер и программа будет отображать строку текста, связанную с этой линией, напримерC программирование Чтения определенной строки из текстового файла

Password 
abcdefg 
Star_wars 
jedi 
Weapon 
Planet 
long 
nail 
car 
fast 
cover 
machine 
My_little 
Alone 
Love 
Ghast 

Input 3: Выход: Star_wars

Теперь я пробьет программу для решения этого, однако он использует функцию GetLine(), который не Скомпилируйте на DEV C++.

#include <stdio.h> 

int main(void) 
{ 
int end = 1, bytes = 512, loop = 0, line = 0; 
char *str = NULL; 
FILE *fd = fopen("Student passwords.txt", "r"); 
if (fd == NULL) { 
    printf("Failed to open file\n"); 
    return -1; 
} 
    printf("Enter the line number to read : "); 
    scanf("%d", &line); 

do { 
    getline(&str, &bytes, fd); 
    loop++; 
    if (loop == line) 
     end = 0; 
}while(end); 

printf("\nLine-%d: %s\n", line, str); 
    fclose(fd); 
} 

Все что мне нужно знать, как это сделать, в простой программе без использования GetLine()

Благодаря

Edit: я не хочу, чтобы загрузить программное обеспечение сделать эту работу

+2

Первый шаг: правильный отступ вашего кода; это выглядит как дерьмо. –

+0

http://www.daniweb.com/software-development/c/code/216411/reading-a-file-line-by-line –

+0

об отступлении: это может быть связано с WYSIWYG. –

ответ

1

использования fgets вместо GetLine.

#include <stdio.h> 

int main(void){ 
    int end, loop, line; 
    char str[512]; 
    FILE *fd = fopen("data.txt", "r"); 
    if (fd == NULL) { 
     printf("Failed to open file\n"); 
     return -1; 
    } 
    printf("Enter the line number to read : "); 
    scanf("%d", &line); 

    for(end = loop = 0;loop<line;++loop){ 
     if(0==fgets(str, sizeof(str), fd)){//include '\n' 
      end = 1;//can't input (EOF) 
      break; 
     } 
    } 
    if(!end) 
     printf("\nLine-%d: %s\n", line, str); 
    fclose(fd); 

    return 0; 
} 
1

вы писали:

char *str = NULL; 

и вы использовали его без инициализации:

getline(&str, &bytes, fd); 

сначала вы должны инициализировать его:

char *str=(char*)malloc(SIZEOFSTR); 
+4

Вопрос помечен C. – WhozCraig

+0

@WhozCraig отредактирован! – abdolah

0

Вы можете добавить эту деталь в свою программу вместо своего цикла while-while. Вы будете использовать fscanf(), аргументами которого являются указатель файла, спецификатор типа данных и переменная, которую вы хотите сохранить.

printf("Enter the line number to read : "); 
scanf("%d", &line); 

while(line--) { 
    fscanf(fd,"%s",str); 
} 

printf("\nLine-%d:%s\n",line,str); 
Смежные вопросы