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


Автор: CoDecode 11.8.2009, 21:08
Здравствуйте!

Я использую GCC 4.1.2, сижу на Линуксе и пытаюсь на Си++ прочитать из файла используя стандартные функции обычного Си. Говорят что Си++ спокойно разбирается в этом коде, потому что подлючены стандартные stdio.h и stdlib.h. Использую код, вида:

Код

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

int main(int argc, char *argv[]){
FILE * fi;
char* file_name = "file";
fi= fopen(file_name, "r");
int n;
   while( !feof(fi) ) {
     fscanf( fi, "%d", &n );
   /* a code */
   }
   fclose(fi);  
}


Но почему компилятор g++ говорит, мол: test.cxx:8: error: expected constructor, destructor, or type conversion before ‘=’ token указывая на fi= fopen(file_name, "r");?
Может ненужно использовать Си-шные функции а попробовать как-то средствами Си++ - библиотек? Но почему он не хочет?

Простите, может я что-то туплю, я не совершенно знаю Си++ и GCC..

Спасибо! smile 

Автор: Remiznik 11.8.2009, 22:17
у меня так вот скомпилировал 
Код

gcc -o test test.c


а вот так 
Код

 g++ -o test test.c


выдал ошибку 
test.c: In function ‘int main(int, char**)’:
test.c:5: предупреждение: deprecated conversion from string constant to ‘char*’

но почему незнаю )

Добавлено через 5 минут и 44 секунды
но если поправить твой код 
Код

#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]){
FILE * fi;
char file_name[] = "file";
fi= fopen(file_name, "r");
int n;
   while( !feof(fi) ) {
     fscanf( fi, "%d", &n );
   /* a code */
   }
   fclose(fi);  
}


то нормальна компилируется )

Автор: nickless 11.8.2009, 22:25
Цитата(Remiznik @  11.8.2009,  21:17 Найти цитируемый пост)
выдал ошибку 

Это не ошибка, это
Цитата(Remiznik @  11.8.2009,  21:17 Найти цитируемый пост)
предупреждение

потому, что тип "file" - const char* , а не char *

Автор: andrew_121 11.8.2009, 22:38
А в чем собственно вопрос?

Автор: Vampir41k 12.8.2009, 03:00
CoDecode
а смысл говорить за с++ если не используете нечего от плюсов, компильте уже на gcc, а не g++
на с++ было бы проще читать и писать в файл через ifstream и ofstream

Автор: EnTrace 28.1.2012, 09:01
Удобнее использовать fstream.

Код

#include <iostream>
#include <fstream>

using namespace std;

int main()
{
string str = "Testing... OK!";
fstream name("file.txt");

//Запись в файл;
name << str;
//Чтение из файла;
name >> str;
return 0;
}

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