我想读'c'和“ Hello world !!”但我只看到十六进制部分。
结构如下:
typedef struct step
{
int n;
char l;
char c[25];
} toto;
int fd = open("one-structure.yolo", O_CREAT | O_WRONLY, 777);
toto some;
some.n = 212347;
some.l = 'c';
some.c[25] = "Hello world!!";
write(fd, &some.n, sizeof(int));
write(fd, some.l, sizeof(char));
write(fd, some.c, 13);
close(fd);
结果:{= U @ f
答案 0 :(得分:2)
除了 Sourav Ghosh 指出的问题。
您不能使用赋值运算符将字符串分配给数组。
some.c[25] = "Hello world!!";
您需要使用strcpy
。
strcpy(some.c, "Hello world!!");
或
将some.c
用作指针。
答案 1 :(得分:1)
除了基兰答案外,您还需要将write(fd, some.l, sizeof(char));
更改为write(fd, &some.l, sizeof(char));
,因为write
需要一个指针。