gpt4 book ai didi

c++ - 使用读取系统调用 C++ 输出文本

转载 作者:行者123 更新时间:2023-11-28 05:42:45 25 4
gpt4 key购买 nike

尝试将前 10 个字符(使用 read 系统调用,如果在指定字符数之前到达文件末尾,它会自动停止)读取到数组中,显示在控制台上读取的字符,关闭文件(使用关闭系统调用)。

////这是我的代码/////不包括标题////

using namespace std;

int main(){

std::string writeToFile;

int file;

char buf[128];

int nread;

char pathNameTest[100];

pathNametest[0] = 'f';

pathNametest[0] = '\0';

cout << "Enter a file name without spaces: " endl;

cin >> pathNameTest;

file = open(pathNametest, O_RDONLY);

if(file == -1)

{

cout << "Error"

exit(0);

}

else
{

while(nread= read(file, buf, 10) > 0){

printf("%s",buf);

}

return 0;

}

它打印多达 10 个字符,就像我想要的那样,但出于某种原因,它打印了额外的未知字符。有人知道如何解决这个问题吗?

最佳答案

Abhay Nayak 的答案很接近,但由于您正在将 10 个字符读入缓冲区,因此您需要 memset 11 个字节而不是 10 个字节,以确保空字符跟在最后一个字符之后。

memset( buf, 0, 11 );

这可能有点矫枉过正,但在一般情况下,您应该清除整个缓冲区以确保安全。注意:我本来想评论 Abhay 的帖子,但我没有足够的声望点数。

关于c++ - 使用读取系统调用 C++ 输出文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36805223/

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