【发布时间】:2022-06-10 20:03:29
【问题描述】:
代码如下:
while((nread = read(fd1,read_buf,sizeof(read_buf)))){
int ret = snprintf(write_buf,sizeof(write_buf),"%s",read_buf);
int vprintf(const char *format, va_list ap);
if(ret < 0){ │ int vfprintf(FILE *stream, const char *format,
perror("snprintf failed"); │ va_list ap);
}else{ │ int vsprintf(char *str, const char *format, va_list
write(fd2,write_buf,strlen(write_buf)); │ ap);
} │ int vsnprintf(char *str, size_t size, const char
printf("strlen:%d, nread:%d\n",strlen(write_buf),nread); │ *format, va_list ap);
bzero(write_buf,sizeof(write_buf)); │ Feature Test Macro Requirements for glibc (see fea‐
bzero(read_buf,sizeof(read_buf)); │ ture_test_macros(7)):
}
如果我不使用-O2,第二个循环strlen为11,nread为10;但是如果我使用 gcc -O2,strlen 是 10,nread 是 10。我不知道为什么,请给我一个答案。谢谢!
【问题讨论】:
-
您的问题无法回答,因为未知因素太多。请edit您的问题并创建minimal reproducible example。
-
什么是
read_buf和write_buf?