Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   Открытие текстового файла (http://forum.oszone.net/showthread.php?t=139191)

.::.DIMA.::. 03-05-2009 02:43 1109447

Открытие текстового файла
 
Решено

Admiral 04-05-2009 00:29 1110051

.::.DIMA.::. возможно всё дело в распространенности MFC.
Цитата:

Цитата hasherfrog
... кое-где MFC называют вымирающим динозавром ... >>


Без привязки к MFC - fscanf можно использовать например так
Код:

#include <stdio.h>

int main(int argc, char* argv[])
{
        char bykva[]={'A','\0'};
        int chislo1,chislo2;

        FILE *My;
/*        My=fopen("MyFile.txt","w");

        chislo1=1;
        chislo2=2;
        fprintf(My,"%s %i %i",bykva,chislo1,chislo2);
        fclose(My);*/
       
        My=fopen("MyFile.txt","r");
        fscanf(My,"%s %i %i",bykva,&chislo1,&chislo2);
        fclose(My);
       
        printf("%s %i %i",bykva,chislo1,chislo2);
        return 0;
}

В файле через пробел должна следовать буква и два числа, для демонстрации (автоматического создания файла) можно раскомментировать часть кода, отвечающую за запись в файл.

Admiral 05-05-2009 01:52 1110883

.::.DIMA.::. можно посмотреть в сторону Win Api
Вместо fopen, fscanf, fclose можно использовать соответственно _lopen, _lread, _lclose.
Но это устаревшие функции, вместо них лучше использовать - CreateFile, ReadFile, CloseHandle.
Win32 File Sample
Кстати по ссылке в выводе как раз рекомендуют забыть про эти функции и работать с MFC вариантом - классом CFile или CStdioFile :)

pva 05-05-2009 07:41 1110960


Цитата:

Цитата Admiral
.::.DIMA.::. возможно всё дело в распространенности MFC.
Цитата hasherfrog:
... кое-где MFC называют вымирающим динозавром ... >> »

Кое-где я стандартную сишную библиотеку (с функциями fprintf, fscanf) считаю динозавром

Для работы с текстовыми файлами полно библиотек, и ничто не мешает пользоваться ими одновременно. И одновременно с MFC. Пример:
Код:

// не забудь #include <fstream>
// помни, что если не используешь using namespace std, то надо явно указывать пространство имён
void Button1_OnClick()
{
  char char1;
  int int1, int2;

  std::ifstream in("input.txt");
  if (!(in >> char1 >> int1 >> int2).good()) MyError("Ошибка чтения данных input.txt");

 ...
}

Если ругается что нет файла fstream - скопируй откуда-нибудь стандартную библиотеку c++
Если ругается на что-то внутри библиотеки - значит сделай #define C_PLUS_PLUS или MICROSOFT_ или что-то там ещё, посмотри внутри библиотечных файлов. Если не поможет - значит компилятор урезанный.

pva 05-05-2009 12:17 1111144

Код:

char s[50];

while (! feof (f))
{
    s[0] = 0; // не забываем инициализировать
    AfxMessageBox (CString (fgets (s, sizeof(s), f)));
};

Syntax

#include <stdio.h>
char *fgets(char *s, int n, FILE *stream);
wchar_t *fgetws(wchar_t *s, int n, FILE *stream); // Unicode version

Description

Gets a string from a stream.

fgets reads characters from stream into the string s. The function stops reading when it reads either n - 1 characters or a newline character whichever comes first. fgets retains the newline character at the end of s. A null byte is appended to s to mark the end of the string.

Return Value

On success fgets returns the string pointed to by s; it returns NULL on end-of-file or error.


Время: 21:32.

Время: 21:32.
© OSzone.net 2001-