2016-01-19 5 views
1

Я использую Arduino IDE, и я пытаюсь читать из текстового файла с помощью функции fopen, но он не работает, он показывает эту ошибку "std::fopen is не является членом std "Ошибка: std :: fopen не является членом std

void tst() { 
    FILE *fp = std::fopen("test.txt", "r"); 
    char str[60]; 

    if (fgets(str, 60, fp) == 0) { 
     digitalWrite(pin, HIGH); 
    } else { 
     digitalWrite(pin, LOW); 
    } 
} 
+0

Вспомнили в '#include ', а не просто '' ? – user4815162342

+0

@iharob 'std :: fopen' * есть функция. Хотя использование C++-потоков возможно в C++, это отнюдь не обязательно, C-style IO задан стандартом C++. – user4815162342

+0

@ user4815162342 Извините, я этого не знал. –

ответ

-1

Вместо этого используйте:

FILE* fp = fopen("test.txt", "r"); 

Классы и пространства имен функций C++. Not C.

+0

OP, скорее всего, использует C++, или сообщение об ошибке будет выглядеть совсем по-другому. 'std :: fopen' [работает на C++] (http://stackoverflow.com/q/28227006/1600898), если включен соответствующий заголовок. – user4815162342

+0

@ user4815162342: В среде Arduino программисты не пишут никаких '# include'. Окружающая среда догадывается, какие файлы .H должны включаться автоматически, но это зависит от многих допущений. Даже в 'C++', fopen() работает отлично. – wallyk

+0

даже после того, как я включил библиотеку stdio.h, компиляторы не распознают fopen –

3

Вы должны включить cstdio через #include <cstdio> в файл, где предполагается использовать std::fopen.

+0

В среде Arduino это неверно. – wallyk

2

Если вы используете:

#include <stdio.h> 

, то вам нужно использовать fopen без std имен.

Если вы используете

#include <cstdio> 

, то вы можете использовать std::fopen.

0

Ну, в конце концов, я узнал, что IDE Arduino не может прочитать файл с моего ПК, нет другого способа сделать это, кроме как с SD-карты.

Спасибо всем

Смежные вопросы