繁体   English   中英

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

[英]Output text using read system call C++

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

////这是我拥有的代码/////未包含标题////

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的帖子发表评论,但是我没有足够的声誉点。

在读取之前使用memset清除缓冲区

memset(buf,0,10);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM