2015-05-11 2 views
2

Привет, я хочу писать числа от 0 до 255 до fd, может кто-то исправить ошибки в нижеприведенном файле? Заранее спасибоКак написать массив чисел через дескрипторы файлов

Код: На самом деле необходимо поднять/уменьшить яркость светодиода, подключенного к определенному порту. поэтому мне нужно записать эти числа в указанный файл с яркостью.

#include <stdio.h> 
#include <stdint.h> 
#include <stdlib.h> 
#include <fcntl.h> 
#include <string.h> 

void main(void) 
{ 
    int fd, t; 
    char buf[300]; 
    char z; 
while(1) 
{ 
    fd = open("/sys/class/leds/pwmD0/brightness", O_WRONLY); 
    if (fd < 0) 
    { 
     abort(); 
    } 
for(t=0;t<10000000;t++);  //random sw delay 
for(z=0;z<255;z++) 
{ 
write(fd, "%s", strlen(z)); 
printf("Received: %s\n",buf[z]); 
} 
for(t=0;t<10000000;t++); 
for(z=255;z>0;z--) 
{ 
write(fd, "%s", strlen(z)); 
printf("Received: %s\n",buf[z]); 
} 
close(fd); 
} 
} 
+1

Пожалуйста, форматировать код, так что лучше читаемым (собственно отступов каждого блока). –

+0

опубликованный код не скомпилирован. Повторно скомпилируйте все включенные предупреждения, исправьте предупреждения (не скрывайте их), повторно разместив код с помощью последовательного отступа. предложите 4 пробела после каждой открытой скобки '{' и un-indent перед каждой закрывающей скобкой '}' пустая строка между кодовыми блоками также значительно помогла бы сделать код легко читаемым нами людьми. – user3629249

+0

предлагает использовать 'exit (-1)' вместо «abort()» – user3629249

ответ

2

Это:

write(fd, "%s", strlen(z)); 

не имеет смысла, функция write() не printf(). Подробнее о документации.

Вам нужно что-то вроде:

char buf[32]; 

const size_t len = snprintf(buf, sizeof buf, "%d\n", z); 
write(fd, buf, len); 
Смежные вопросы