使用 write 在文件中写入 int 变量
Write int variable in file using write
我目前正尝试在文件中使用写入函数写入整数变量。这是我的代码:
int main(int argc, char** argv){
int fd, nbMult, i;
char buf[4];
if((fd = open("data", O_CREAT|O_RDWR, 0777))==-1){
perror("ERROR\n");
exit(EXIT_FAILURE);
}
do{
printf("Bla bla ");
if( scanf("%d", &nbMult) !=1 ) while( (i = getchar()) != '\n' );
}while(nbMult<1);
sprintf(buf, "%d", nbMult);
if( write(fd, buf, sizeof(int)) == -1 ){
perror("ERROR\n");
exit(EXIT_FAILURE);
}
close(fd);
return 0; }
它创建了文件,但是当我尝试打开它时,它显示 "cannot display "。当我用 data.txt 替换文件名时,它可以工作,但它在文件中显示奇怪的字符。我也尝试过使用 sprintf() 将 Integer 变量转换为 String,这是同样的问题。
文件确实已创建 - 并且有 sizeof(int)
字节。它的内容是组成内存中整数nbMult的字节。
事实是,这些 不是 用于在终端上 print nbMult
的字符。例如,假设您为 nbMult
输入了 1234。您输入的内容实际上是字符 '1', '2', '3', '4'
- 其数值分别为 49、50、51、52(here 的程序对此进行了说明)。但是在典型的机器上,nbMult
在内存中的字节数是 210、4、0、0,因为:
* 210 == 1234 % 2^8
* 4 == (1234/2^ 8) % 2^8
* 0 == (1234/2^16) % 2^8
* 0 == (1234/2^24) % 2^8
这些是您在文件中看到的 "strange characters"。
我目前正尝试在文件中使用写入函数写入整数变量。这是我的代码:
int main(int argc, char** argv){
int fd, nbMult, i;
char buf[4];
if((fd = open("data", O_CREAT|O_RDWR, 0777))==-1){
perror("ERROR\n");
exit(EXIT_FAILURE);
}
do{
printf("Bla bla ");
if( scanf("%d", &nbMult) !=1 ) while( (i = getchar()) != '\n' );
}while(nbMult<1);
sprintf(buf, "%d", nbMult);
if( write(fd, buf, sizeof(int)) == -1 ){
perror("ERROR\n");
exit(EXIT_FAILURE);
}
close(fd);
return 0; }
它创建了文件,但是当我尝试打开它时,它显示 "cannot display "。当我用 data.txt 替换文件名时,它可以工作,但它在文件中显示奇怪的字符。我也尝试过使用 sprintf() 将 Integer 变量转换为 String,这是同样的问题。
文件确实已创建 - 并且有 sizeof(int)
字节。它的内容是组成内存中整数nbMult的字节。
事实是,这些 不是 用于在终端上 print nbMult
的字符。例如,假设您为 nbMult
输入了 1234。您输入的内容实际上是字符 '1', '2', '3', '4'
- 其数值分别为 49、50、51、52(here 的程序对此进行了说明)。但是在典型的机器上,nbMult
在内存中的字节数是 210、4、0、0,因为:
* 210 == 1234 % 2^8
* 4 == (1234/2^ 8) % 2^8
* 0 == (1234/2^16) % 2^8
* 0 == (1234/2^24) % 2^8
这些是您在文件中看到的 "strange characters"。