2016-09-22 2 views
-1

Я держу адресностиошибка: инициализатор элемент не является постоянной C

`error: initializer element is not constant 
FILE *file = fopen("/sys/class/hwmon/hwmon0/temp1_input", "r"); 

temperatura.c:19:14: error: expected ‘)’ before string constant 
fscanf(file ,"%s", &temp);`; 

мой весь код выглядит следующим образом:

#define temp4M 1000 
FILE *file = fopen("/sys/class/hwmon/hwmon0/temp1_input", "r"); 
char temp[temp4M]; 


fscanf(file ,"%s", &temp); 

int main() 
{ 
    printf(" CPU cores :%d\n", corCPU); 
    printf("%s", modCPU); 
    printf("%d",temp); 

    return 0; 
} 

проблема в моем пути к файлу или я что-то отсутствует, обратите внимание, что я am чтение чисел из temp1_input как строки вместо чисел. что не так?

+2

Вы не можете вызвать функцию в глобальной области. C не является языком сценариев. Таким образом, вызовы 'fopen' и' fscanf' должны находиться внутри 'main'. – user3386109

+1

вы не можете выставить код вне метода. Я должен переместить fopen, fscant etc insode main – pm100

+0

Одна вещь: 'fscanf (file,"% s ", &temp);' должен быть 'if (fscanf (файл,"% s ", temp)! = 1) {// код ошибки } 'note Я также удалил' & '. * Всегда * проверяйте возвращаемое значение из семейства' scanf'. В противном случае это может быть [GIGO] (https://en.wikipedia.org/wiki/Garbage_in,_garbage_out) , –

ответ

1

код должен пойти внутри функции main:

int main() 
{ 
    FILE *file = fopen("/sys/class/hwmon/hwmon0/temp1_input", "r"); 
    char temp[temp4M]; 

    fscanf(file ,"%s", &temp); 

    ... 
} 

Компилятор запуталась вашим кодом, который был вне функции, и принял его за что-то. Таким образом, это дало вам путаные сообщения об ошибках, которые не помогут вам увидеть реальную проблему.

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