gpt4 book ai didi

c - 为什么程序的输出是不同的?

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

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main()
{
FILE *fp;
char ch;
char buffer[80] ;
fp = fopen("c:\\Rasmi Personal\\hello.txt", "w");

if(fp == NULL)
{
printf("File not found");
exit(1);
}
else
{
while(1)
{
gets(buffer);
fwrite(buffer, strlen(buffer), 2, fp); /* I made, size_t nitems = 2 (third element/argument)*/
fwrite("\n", 1, 1, fp);
}

}

fclose(fp);

return 0;
}

输入:

Rasmi Ranjan Nayak

输出:

Rasmi Ranjan Nayak      0@ ÿ" 8ÿ" 

为什么会出现这些垃圾。

根据 fwrite() 函数。如果 size_t nitems 大于 1,则输入的文本将被写入多次。但是为什么我得到垃圾?

最佳答案

你告诉 fwrite() 从缓冲区写入两次 strlen(buffer) 字节(通过设置 nmemb = 2 你正在让它写入两个“对象”,每个都是 strlen(buffer) 字节长),所以它读取的字节数是实际存在的字节数的两倍。

“垃圾”就是字符串在 buffer 中结束后出现在内存中的任何内容。

这是错误的代码,nmemb 应该是 1

关于c - 为什么程序的输出是不同的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10702666/

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