写入系统调用unix不会写入argv中的所有文本

时间:2019-03-28 09:31:14

标签: c++

我正在尝试写出用户输入到argv [2]中的数据。我必须使用write()系统调用(unix)

例如,我输入“ hi there”,但是“ hith”被写到文件中,而不是整个文本。

#include <iostream>
#include <fcntl.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <stdio.h>
#include <string.h>


using namespace std;
using std::cout;
using std::endl;

int main(int argc, char *argv[])
{
    int fd, fileWrite;
    char *file = argv[1]; //file to be create
    char *text = argv[2]; //text stored here

    fd = open(file, O_WRONLY | O_APPEND | O_CREAT);

    //write message from command line 
    fileWrite = write(fd, text, sizeof(text));
    fileWrite = write(fd, "\n", 1);

    if(fileWrite == -1){
        perror("fileWrite");
    }


    //close file
    close(fd);


return 0;
}`

1 个答案:

答案 0 :(得分:1)

使用strlen(text)中的<string.h>而不是sizeof(text)来确定字符串的长度,sizeof(text)将返回指针的大小,该大小始终是相同的。