linux内核,输入输出代码问题

这个代码可以正常编译,但是在运行的时候会乱码。

#include <sys/types.h>
#include<fcntl.h>
#include<stdio.h>
#include<unistd.h>
#include<string.h>
 
int main() {
    int filedes;
    ssise_t nread;
    off_t newpos;
 
    char buffer[1024];
    char content[] = "Hello my friend!!\n";
    char content2[] = "I love you\n";
 
    filedes = open("data.txt", O_RDWR);
 
    nread = read(filedes, buffer, 1024);
    printf("%s\n", buffer);
 
    newpos = lseek(filedes, (off_t)3, SEEK_SET);
    if (newpos == -1) {
        printf("error");
}

write(filedes,content,strlen(content));// 这里代表什么意思?
// 如果这里改成write(filedes,content2,strlen(content2));的话,又是代表什么意思呢

newpos = lseek(filedes, (off_t)3, SEEK_SET);
nread = read(fildes, buffer, 1024);
printf("%s\n", buffer);

close(fildes);

return 0;
write(filedes, (off_t)3, SEEK_SET);这里有错误, 这个函数的最后一个参数是写入的数据大小,不是 SEEK_SET,改下,第二个参数是数组类型,你在试下运行

代码文件,data.txt编码格式最好保持一致