mfc работа с файлами

Тема в разделе "WASM.BEGINNERS", создана пользователем Tramp, 25 июн 2007.

  1. Tramp

    Tramp New Member

    Публикаций:
    0
    Регистрация:
    20 июл 2006
    Сообщения:
    47
    Вот встал вопрос - нужно с файла считать данные, как это сделать построчно - заню... но вот как это сделать почислам... ну как в Борлан Си было - считывается одно число до пробела или перехода на след строку.
    напр 12 45 113 - считывает 3 числа.
    нужно организовать цикл и все эти числа считать... в имеющихся в наличии хелпах идеи реализации не нашел.
     
  2. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    fopen
    fscanf
    fclose
     
  3. censored

    censored New Member

    Публикаций:
    0
    Регистрация:
    5 июл 2005
    Сообщения:
    1.615
    Адрес:
    деревня "Анонимные Прокси"
    n0name
    MFC? :)
    CStudioFile
     
  4. Tramp

    Tramp New Member

    Публикаций:
    0
    Регистрация:
    20 июл 2006
    Сообщения:
    47
    n0name
    а можно пример кода? фсканф вызывал у меня ошибку в процессе работы... мож что не так или не там наваял
     
  5. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    ну дык это будет работать и в мфц.
     
  6. Tramp

    Tramp New Member

    Публикаций:
    0
    Регистрация:
    20 июл 2006
    Сообщения:
    47
    написал так
    FILE *inp;
    int i,j;

    if (!(inp=fopen(m_Filepath, "r")))
    { MessageBox("read failed");}
    fscanf(inp,"%d", &i);
    for (j=0;j<i;j++)
    {
    m_Filepath=i;
    UpdateData(FALSE);
    MessageBox("j++");
    }

    число в файле = 3
    итого алерт "j++" вылетел 3 раза...

    работает...
    только есиб метот "поцивилизованее " :) иба дипломная.. декан может и инсульт от такого поймать....
    и еще вопрос... как в алертовом окне вывести интовскую переменню?
     
  7. censored

    censored New Member

    Публикаций:
    0
    Регистрация:
    5 июл 2005
    Сообщения:
    1.615
    Адрес:
    деревня "Анонимные Прокси"
    Тогда std::ifstream
     
  8. Tramp

    Tramp New Member

    Публикаций:
    0
    Регистрация:
    20 июл 2006
    Сообщения:
    47
    ребят, я вообще потерялся - о чем вы... можете сказать как считать числа из файла в интовый масив... ?
     
  9. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    Ну мфц - это СФайл, а стл и црт это уже не мфц =\
     
  10. crypto

    crypto Active Member

    Публикаций:
    0
    Регистрация:
    13 дек 2005
    Сообщения:
    2.533
    Tramp
    А декан переживет, если ты будешь считывать из файла строки, а потом их в памяти разбирать к примеру с помощью функции strtok?
     
  11. Tramp

    Tramp New Member

    Публикаций:
    0
    Регистрация:
    20 июл 2006
    Сообщения:
    47
    crypto
    я просто туго представляю как это сделать иба с вижуал сишкой дальше диалогов не заходил ранее. в принципе пофиг. лишь бы в итоге получился интовый масив :)
     
  12. crypto

    crypto Active Member

    Публикаций:
    0
    Регистрация:
    13 дек 2005
    Сообщения:
    2.533
    Tramp
    Ну тогда что-то типа (обычная функция на С):

    Код (Text):
    1. #define MAX_STR 1024
    2. char str[MAX_STR];
    3. char *p;
    4. FILE *inf = fopen("filename", "rt");
    5. if (!inf)
    6. {
    7.   Message("Cannot open input file");
    8.   returrn 0;
    9. }
    10. int n = 0;
    11. while (1)
    12. {
    13.   if (!fgets(str, MAX_STR, inf)) break;
    14.   p = strtok(str, " \n");
    15.   while (p)
    16.   {
    17.     ARRAY[n] = atoi(p); n++;
    18.     p = strtok(NULL, " \n");
    19.   }
    20. }
    21. fclose(inf);
    22. return n;
     
  13. Tramp

    Tramp New Member

    Публикаций:
    0
    Регистрация:
    20 июл 2006
    Сообщения:
    47
    и как вывести все же интовую переменную для просмотра ? :))
     
  14. Tramp

    Tramp New Member

    Публикаций:
    0
    Регистрация:
    20 июл 2006
    Сообщения:
    47
    crypto
    а вот так работать буит?
    int i
    if (!(inp=fopen(m_Filepath, "r")))
    { MessageBox("read failed");}
    fscanf(inp,"%d", &i);

    вернее оно то работает.. но так как вывести итог на экран пока не могу - не могу и проверить.... как можна под МФС вывести интовую матрицу??
     
  15. crypto

    crypto Active Member

    Публикаций:
    0
    Регистрация:
    13 дек 2005
    Сообщения:
    2.533
    Tramp
    Например
    printf("%d", ARRAY[n]);
    PS
    Я только не понял, зачем такую задачу с помощью MFC решать?
     
  16. Tramp

    Tramp New Member

    Публикаций:
    0
    Регистрация:
    20 июл 2006
    Сообщения:
    47
    crypto
    это не вся просто задача.
    нада считать данные из файла - это для начала. потом много всего именно в МФЦ..
    а есть в мфс чтоб какую нить таблицу нарисовать и вывести с данными из этой матрицы. ну чтоб красиво?
     
  17. censored

    censored New Member

    Публикаций:
    0
    Регистрация:
    5 июл 2005
    Сообщения:
    1.615
    Адрес:
    деревня "Анонимные Прокси"
    бугага %)
     
  18. Tramp

    Tramp New Member

    Публикаций:
    0
    Регистрация:
    20 июл 2006
    Сообщения:
    47
    censored
    нисмишно :)
    ну как вывести хоть в какой нить приемлемой форме содержание матрицы в мфс???
     
  19. RedLord

    RedLord Member

    Публикаций:
    0
    Регистрация:
    23 июн 2005
    Сообщения:
    183
    Адрес:
    Ukraine
    Tramp
    ListBox - как вариант
     
  20. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    Для таблицы ListView тогда уж.

    MFC не покрывает все задачи, но и не запрещает использование других библиотек (CRT, STL). Поэтому почему бы не воспользоваться fopen/fscanf?