输入输出
一、基本输入输出
1.scanf函数
- 头文件:stdio.h
- 原型:
int scanf(const char *format, ...)
- 返回值:输入字符的数量
- format:格式控制字符串
- …:可变参数列表
2.printf函数
- 头文件:stdio.h
- 原型:
int printf(const char *format, ...)
- 返回值:输出字符的数量
- format:格式控制字符串
- …:可变参数列表
具体代码
#include <stdio.h>
int main()
{
int n1,n2,n3,n4;
scanf("%d%d%d%d",&n1,&n2,&n3,&n4);
printf("scanf = %d.%d.%d.%d\n",n1,n2,n3,n4);
return 0;
}
运行如图
二、字符串相关输入输出
- sscanf函数:从字符数组输入内容
- sprintf函数:向字符串输出内容
具体代码
#include <stdio.h>
int main()
{
int n=1,i;
int arr[4];
char str[100];
sprintf(str,"%d.%d.%d.%d",192,168,1,0);
printf("str = %s\n",str);
sscanf(str,"%d.%d.%d.%d",&arr[0],&arr[1],&arr[2],&arr[3]);
for(i=0; i < 4; i++){
printf("%d\n",arr[i]);
}
}
运行如图
三、文件相关输入输出
- fscanf函数
- fprintf函数
1.创建并写入文件 output.txt
#include <stdio.h>
int main()
{
int n=1,i;
int arr[4];
char str[100];
sprintf(str,"%d.%d.%d.%d",192,168,1,0);
printf("str = %s\n",str);
sscanf(str,"%d.%d.%d.%d",&arr[0],&arr[1],&arr[2],&arr[3]);
for(i=0; i < 4; i++){
printf("%d\n",arr[i]);
}
FILE *fp = fopen("./ouput.txt","w");//相关路径
fprintf(fp,"str = %s\n",str);
fclose(fp);
return 0;
}
1.读文件 output.txt,可更改保存
#include <stdio.h>
int main()
{
int n=1,i,offset = 0;
int arr[4];
char str[100],ans[100],temp;
FILE *fin = fopen("./ouput.txt","r");
//%d, %f, %c, %s等,分别表示读入一个整数,浮点数,字符,字符串。还可以加上控制,如%ld,表示读入一个长整型数,%20s表示最多读入20个字符。%s会跳过前面的空白符,但是不会跳过后面的空白符;%c不会跳过空白符,所以使用%c.
while (fscanf(fin,"%c",&temp)!=EOF){
offset += sprintf(ans + offset ,"%c",temp);
}
fclose(fin);
printf("%s",ans);
return 0;
}
四、练习
- 计算输入数字的位数
#include <stdio.h>
int main()
{
int n;
while(scanf("%d",&n)!=EOF){
printf("位数 = %d\n",printf("%d",n));
return 0;
}
- 读入一个行字符串(可能包含空格),输出这个字符串中字符的数量
无法读入空格符号
#include <stdio.h>
int main()
{
char str[100];
scanf("%s",str);
printf("%s\n",str);
return 0;
}
可读入字符串
#include <stdio.h>
int main()
{
char str[100];
scanf("%[^\n]s",str);//[ ]字符匹配集,^:除了
printf("%s\n",str);
return 0;
}
加循环
#include <stdio.h>
int main()
{
char str[100];
while(scanf("%[^\n]s",str)!= -1){
getchar();
printf("有%d个字符\n",printf("%s",str));
}
return 0;
}