我無法使用open()函數正確打開/創建文件,所以我認爲使用errno消息將幫助我找出原因。但是我不知道如何設置if(),所以它會打印出錯誤信息。 我知道這樣的代碼應該工作:如何在保存函數值的同時打印errno?
if(open(handle,O_RDWR | O_CREAT) == -1){
printf("%s\n",strerror(errno));
}
但如果我想保存從open()來我的變量的值,如果是-1,那麼打印錯誤呢?我不想爲此調用open()兩次,如果沒有問題,我不知道如何分配它,以及如果沒有,則如何打印錯誤。
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <ctype.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <string.h>
#include <errno.h>
int main(int argc, char **argv){
int handle,i,help;
int *array = malloc(5*sizeof(int));
float *red = malloc(5*sizeof(int));
array[0]=5;
array[1]=4;
array[2]=3;
array[3]=2;
array[4]=1;
handle = open(argv[1], O_RDWR | O_CREAT);
if(handle == -1){
printf("%s\n",strerror(errno));
}
printf("handle 1 %d\n",handle);
write(handle,array,20);
close(handle);
handle = open(argv[1], O_RDONLY);
lseek(handle,0,SEEK_SET);
printf("handle %d\n",handle);
help=read(handle,&red,20);
printf("pomoc %d\n",help);
for(i=0; i<5; i++){
printf("%d\n",(int)red[i]);
}
close(handle);
return 0;
}
這是我的「嘗試」代碼,因爲我不確定read()函數是如何工作的,所以我想試試如果我可以在那裏拋出任何類型的指針並讀取任意數量的字節,並且它可以工作,但是我甚至無法通過開幕式。 – ligazetom
請注意,在報告錯誤之後,您不應繼續處理,因爲如果處理已打開。錯誤應該在標準錯誤流上報告,而不是在標準輸出上報告。 –