gpt4 book ai didi

c - "buffer[gotten] = '\0';"在此代码中的作用是什么?

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

#include<stdio.h>
#include<fcntl.h>
int main(int argc, char *argv[])
{
char buffer[6];
int gotten;
printf("%s",argv[1]);
int fh = open(argv[1],O_RDONLY);
printf("File handle %d\n", fh);
while (gotten = read(fh, buffer, 6)) {
buffer[gotten] = '\0';
printf("%s", buffer);
}
return 0;
}

这部分将文件作为输入并打印文件的内容。我提供的文本文件包含“你好”。 buffer[gotten] = '\0'; 在这段代码中做了什么?

最佳答案

它确保有一个 NUL 字符来终止 C 风格的字符串,以使其安全地用于 printf:https://en.wikipedia.org/wiki/Null-terminated_string

在 C++ 中有更好的类型,比如 std::string:

Live On Coliru

#include <fcntl.h>
#include <unistd.h>
#include <cstdio>
#include <array>
#include <iostream>

int main(int argc, char *argv[]) {

if (argc < 2)
return -1;

std::array<char, 6> buffer;
printf("%s\n", argv[1]);

int fh = open(argv[1], O_RDONLY);

printf("File handle %d\n", fh);

while (int gotten = read(fh, buffer.data(), buffer.size())) {
std::cout.write(buffer.data(), gotten);
}
}

关于c - "buffer[gotten] = '\0';"在此代码中的作用是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46634854/

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