我对 Linux 中的管道有疑问。管道后看起来空格字符丢失了。运行以下C++
代码
#include <iostream>
#include <stdio.h>
#include <string.h>
using namespace std;
int main(){
char s[] = "ab cd", c;
int n = strlen(s);
for(int i = 0; i<n && (cin >> c); i++)
if(s[i] != c){
printf("wrong at %d : '%c' != '%c' \n", i, s[i], c);
break;
}
return 0;
}
从
echo "ab cd" | ./checker
shell 命令给出
wrong at 2 : ' ' != 'c'
这是正常行为吗?如何避免在管道中丢失字符?