gpt4 book ai didi

c - 使用低级 C i/o 将从标准输入接受的整行写入文件

转载 作者:太空宇宙 更新时间:2023-11-04 08:51:03 26 4
gpt4 key购买 nike

我正在编写一个程序,它将来自标准输入的一行输入与一个单独的文件连接起来,并将合并的文本写入输出文件。出于某种原因,当我在标准输入中键入整行文本时,只写入了空格之前的第一个单词。我的代码有什么问题?

接受标准输入并写入:

// check for stdinput flag
if(strcmp(argv[1], "-") == 0) // use standard-in for input file 1
{
printf("Type your text and then hit enter: ");
p = fgets(userInput, sizeof(userInput), stdin);
if (write(output_file, userInput, sizeof(p)) < 0) // write stdin to output file
{
perror(argv[4]);
close(output_file);
exit(1);
}
}

在程序中进一步……写入第二个文件以输出:

    else // open file2 and assign to file-handler, then output to file
{
if((input_file2 = open(argv[2], O_RDONLY)) < 0)
{
perror(argv[2]);
close(output_file); // close the opened output file handler
exit(1);
}

while((n = read(input_file2, buffer, sizeof(buffer))) > 0)
{
if((write(output_file, buffer, n)) < 0)
{
perror(argv[3]);
close(input_file2);
close(output_file);
exit(1);
}
}
close(input_file2);
}

命令行和输出:

server1{user25}35: program - file2 outputfile

Type your text and then hit enter: THIS IS MY TEXT FROM STDIN

server1{user25}36: cat outputfile
THISthis is the text in file2

server1{user25}37:

最佳答案

在您的第一个片段中,您输出 sizeof(p) 个字符,即 sizeof(char*)(在 64 位系统上为 8 个字节)。您至少需要将其更改为 strlen(p)(显然,在检查错误和 NULL 返回值之后)。

关于c - 使用低级 C i/o 将从标准输入接受的整行写入文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19711379/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com