2015-05-11 47 views
2

嗨,我想寫0到255的數字到FD,有人可以糾正下面的文件中的錯誤?在此先感謝如何通過文件描述符編寫一個數字數組

代碼:實際上需要增加/減少連接到特定端口的LED的亮度。所以我需要將這些數字寫入指定的亮度文件。

#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個空格並且在每個大括號之前取消縮進'}'代碼塊之間的空行也將極大地幫助使代碼易於被我們人讀取 – 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); 
相關問題