Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > Чтение из файла


Автор: Veroonya 25.11.2011, 09:11
Задача состоит в том, чтобы открыть файл, считать с него массив слов, разделенных запятой, и произвести с ним некоторые действия. Имя файла должно быть введено пользователем.
В коде указано, в каком месте возникают ошибки сегментации, объясните, пожалуйста, почему, и помогите исправить.
Код


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

int  readFile (char *fileName, char **word) {
//Процедура должна открыть файл и считать с него массив слов. На выходе нужно n - число слов и word - массив слов
     FILE *read;
     int n =0;
     word = new char *[30];
     //Открываем файл для чтения
     read = fopen (fileName, "rt");   //Если в main сделать char fileName[10];,то строка считывается, но тогда не может открыться файл.
     //Проверяем, открылся ли
     if (read==NULL) {
       //Выводим сообщение об ошибке
       printf("Error while opening file to read!");
       getch();
       //выходим из процедуры
       return 0;
    } 
    
    //Читаем файл по словам, разделенным запятой
    while (!feof(read)) {
          fscanf(read, "%s,",word[n]);
          //Прибавляем нумерацию слов
          n++;
    }
    return n;
}

int main(){
    FILE *write;
    char *fileName;
    char **word = new char *[30];
    int n;
    
    //Просим ввести имя файла
    printf ("Input file name to read: ");
    scanf("%s", fileName);      //Здесь ошибка сегментации
    
    n = readFile(fileName, word);
}

Автор: bsa 25.11.2011, 10:34
Veroonya, указатель fileName указывает непонятно куда. А должен на массив символов, достаточного для имени файла размера. Почитай про http://forum.vingrad.ru/forum/topic-272671.html.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)