如果有一堆输入的数据(不管是数字还是字符),新手常常不知道怎么结束输入状态。
其实可以用组合键结束
int input = 0;
//c++
while(std::cin >> input) {
//your code
}
//c
while (EOF != scanf("%c",&ch))
{
//your code
}
上面程序执行时,输完数据之后另起一行,按ctr+D in Unix,ctr+Z in windows就会退出循环,结束输入。另外,scanf %c可以接收空格 而其它%d%s等都以空格或回车为分隔符
getchar可以接收包括回车空格等一切符号
/* 华科机试练手
* 文件操作
*/
#include <stdlib.h>
#include <stdio.h>
int main(int argc, char *argv[])
{
char buffer[80] = {0},ch;
int i,isSpace = 0,charc=0,word=0,line=0;
FILE *f1,*fp = fopen("abc0.txt","wr");
// 下面这行代码有两个注意点 :
// getchar的使用,可以获取包括空格,回车在内的字符
// 如何用组合键ctrl+z(unix下是ctrl+d)结束循环
while (EOF != (ch = getchar()))
{
//fputc(ch,fp);
fwrite(&ch,sizeof(char),1,fp);
}
fclose(fp);
fp = fopen("abc0.txt","r");
f1 = fopen("abc1.txt","w");
while(!feof(fp))
{
fread(&ch,sizeof(char),1,fp);
if(isSpace && ' '==ch)continue;
if(' ' == ch)isSpace = 1;
else isSpace = 0;
fwrite(&ch,sizeof(char),1,f1);
}
fclose(f1);
fclose(fp);
printf("\n");
return 1;
}