здесь я сталкиваюсь со странной проблемой, связанной с функцией чтения c в linux.
#include <stdio.h>
#include <fcntl.h>
#include <unistd.h>
#include <errno.h>
int main(int argc, char** argv){
int fd=open("a.c",O_RDONLY);
if(fd==-1){
fprintf(stderr,"%s\n",strerror(errno));
}
char buf[10];
if(read(fd,buf,9)==-1){
fprintf(stderr,"%s\n",strerror(errno));
}else{
printf("%s\n",buf);
}
}
Я думаю, что buf должен быть инициализирован в ноль, поэтому первые 9 символов читаются в буфер, а последний - '\0 'и это как строка.но результат нечетный, ниже файл AC и результат этой программы, ac
1234567890abcd
результат
1234567893øþzôo`
кажется, что эта строка не в буфере, я не могу понятьчто случилось, кто-нибудь может мне помочь?спасибо.