写函数语言C

时间:2015-12-02 14:49:50

标签: c file

您好我正在尝试使用写入功能写入文件。但我得到了' ^^'而不是我的变量: 在我的代码下面

#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;
}

1 个答案:

答案 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;
}