int main(int argc,const char* argv[]) { char buff[20]; int len; len= fread(buff,1,strlen(buff),stdin); printf("%ld\r\n",strlen(buff)); fwrite(buff,1,len,stdout); return 0; } ~ 我使用这段代码去打印出来我写上去的字符串 可以我输入一个hello world 只有h打印出来 怎么回事
时间: 2023-11-30 21:02:47 浏览: 198
Linux系统编程学习笔记
这是因为你在读取用户输入之前没有对`buff`进行初始化,所以`buff`中的内容是不确定的。你需要在读取用户输入之前,先将`buff`中的内容清空,可以使用下面这行代码:
```
memset(buff, 0, sizeof(buff));
```
另外,你在调用`fread`时,第三个参数应该是`sizeof(buff)`,而不是`strlen(buff)`。因为`strlen(buff)`表示的是`buff`中的字符串长度,而不是`buff`的大小。应该这样写:
```
len = fread(buff, 1, sizeof(buff), stdin);
```
修改后的完整代码如下:
```
#include <stdio.h>
#include <string.h>
int main(int argc, const char* argv[]) {
char buff[20];
int len;
memset(buff, 0, sizeof(buff));
len = fread(buff, 1, sizeof(buff), stdin);
printf("%d\r\n",len);
fwrite(buff, 1, len, stdout);
return 0;
}
```
阅读全文