您好我正在尝试使用写入功能写入文件。但我得到了' ^^'而不是我的变量: 在我的代码下面
#include<stdio.h>
#include <fcntl.h>
main (int argc,char * argv[])
{
FILE *PF=NULL;
char File_name_1[100];
int fd=0;
char str[30] = "This is test";
int var=30;
printf("Saisir le nom du fichier2 ");
scanf("%s",File_name_1);
if ( (fd = open(File_name_1,O_WRONLY|O_TRUNC|O_CREAT,0777)) < 0 )
{
printf("Impossible d'ouvrir fichier \n");
}
else
{ printf("Traitement2 à commencer2 var :%d:",var);
write(fd,&var,sizeof(var));
}
close(fd);
return 0;
}
答案 0 :(得分:0)
问题出在这里:
write(fd,&var,sizeof(var));
您正在尝试将int写入文件。如果你想为人类写一些可读的东西,那么write的第二个参数应该是char *类型。尝试使用itoa函数转换var值,它会将其转换为该数字的字符串表示形式。如果您的系统上没有itoa,您也可以使用sprintf:
#include <stdio.h>
#include <fcntl.h>
#include <strings.h> //for strlen
int main (int argc,char * argv[])
{
char buff[256]; //the buffer used by sprintf
char File_name_1[100];
int fd=0;
char str[30] = "This is test";
int var=30;
printf("Saisir le nom du fichier2 ");
scanf("%s",File_name_1);
if ( (fd = open(File_name_1,O_WRONLY|O_TRUNC|O_CREAT,0777)) < 0 )
{
printf("Impossible d'ouvrir fichier \n");
}
else
{ printf("Traitement2 à commencer2 var :%d:",var);
sprintf(buff, "%d", var); //convert your int into a string
write(fd,buff,strlen(buff)); //wrtie the string in the fd
}
close(fd);
return 0;
}