文件输入输出
1.输入输出重定向
freopen("input.txt","r",stdin); //该语句使得所有读键盘输入的函数都从文件input.txt读入,例如scanf。 freopen("output.txt","w",stdout); //该语句使得所有输出到屏幕的函数都输出到文件output.txt,例如printf。
2.fopen
#include<cstdio>
#define INF100000000
int main() {
FILE *fin,*fout;//文件指针
fin = fopen("data.in","rb");
fout = fopen("data.out","wb");
int x,n=0,min=INF,max=-INF,s=0;
while(fscanf(fin,"%d",&x)==1) {
s+=x;
if(x<min)min=x;
if(x>max)max=x;
n++;
}
fprintf(fout,"%d %d %.3f
",min,max,(double)s/n);
fclose(fin);
fclose(fout);
return 0;
}
3.字符数组
fgetc(fin)//从打开的文件fin中读取一个字符,在标准输入中等价于getchar(); fgets(buf,maxn,fin);//读取完整的一行放在字符数组buf里,这个函数读取不超过 //maxn-1个字符,然后再末尾添上结束符 ,因此不会出现越 // 界,读到换行符工作停止,没有读到字符时返回NULL
标准输入输出
1.cin/cout
#include<iostream> int main(){ int a; cin>>a; //(1)cin语句把空格和换行符作为分隔符,不输入给变量 cout<<a; return 0; }
2.scanf/printf
scanf("格式控制字符串",输出列表); printf("格式控制字符串“,地址列表);
3.字符串的输入输出
字符数组:
(1)
#include<cstdio> #include<cstring> int main(){ char s[20]; scanf("%s",s);//s前不需要加地址,因为数组名本身就指向数组首元素 2.遇空格结束 printf("%s",s); return 0; }
(2)
getchar(); //从标准输入中读取下一个字符,返回类型为int型,为用户输入的ASCII码 putchar(); //向终端输出一个字符
(3)
puts(s);//输出字符串s和一个换行符
gets(s);//读取一行字符存入s //由于没有指明读取的最大字符数,因而存在缓冲区漏洞,在C11标准中,该函数已被删除.
(4)
#include <iostream> using namespace std; int main () { char s[20]; cin.getline(s,5,' '); //读取一行,5是最大的读取的字符数(包含结束符' '), 是分隔符,可以省略,即cin.getline(s,5); cout<<m<<endl; }
(5)
sprintf(s,"%d",N)1.将整数N转化成字符串s. sscanf(s,"%d",&N)2.字符串s转换成数字N.