目录
>>> scanf()
1.函数原型:
#include<stdio.h>
int scanf( const char *format [,argument]... );
*** 返回值:正常情况下,返回读出成功的项数;输入类型不匹配和读取失败返回0;如果遇到错误或者遇到end of file,返回EOF。(end of file指ctrl z或者ctrl d)
2.在输入字符串时存在的不足:
*** 输入的字符串中不能有空格或制表符等, 比如输入"aa bb cc"的话,字符串只会接收到aa,遇空格就结束.
*** 从缓存区读取字符串时不包含结尾的回车(\n)。
#include <stdio.h>
int main()
{
char str[20] = { 0 };
printf("请输入字符串:");
scanf("%s", str);
printf("%s\n", str);
return 0;
}
//程序结果:
//输入:aabbcc 输出:aabbcc
//输入:aa bb cc 输出:aa
//可以用getcahr()吃掉scanf()遗留的'\n'
#include <stdio.h>
int main()
{
char str[20] = { 0 };
printf("请输入字符串:");
scanf("%s", str);
printf("还要输入一个字符:\n");
getchar(); //getchar直接接收了scanf遗留的'\n',并没有等待用户输入
printf("输出字符串:%s\n", str);
return 0;
}
//程序结果:
//请输入字符串:asdf
//还要输入一个字符:
//输出字符串:asdf
>>> getchar()与putchar()
1.getcahr()函数原型:
#include <stdio.h>
int getchar( void );
*** 返回值:读取的字符
2.putchar()函数原型:
#include <stdio.h>
int putchar( int c );
*** 返回值:要打印的字符
#include <stdio.h>
int main()
{
int i = 0;
char str[30] = { 0 };
printf("请输入字符串:");
char a; //int a;
while ((a = getchar()) != '\n')
{
str[i] = a;
i++;
}
//str[i] = '\0'; //使用printf打印时必须加'\0'
//printf(str);
for (int j = 0; j < i; j++)
{
putchar(str[j]);
}
return 0;
}
//结果:
//请输入字符串:I am handsome
//I am handsome
//错误程序
#include <stdio.h>
int main()
{
int i = 0;
char str[30] = { 0 };
printf("请输入字符串:");
char a = getchar();
while (a != '\n')
{
str[i] = a;
i++;
}
for (int j = 0; j < i; j++)
{
putchar(str[j]);
}
return 0;
}
>>> gets()与pur()
1.gets()函数原型:
#include <stdio.h>
char *gets( char *buffer );
*** 返回值:成功返回其参数;失败返回NULL
*** 使用 gets() 时,系统会将最后的换行符(\n)从缓冲区中取出来,然后丢弃,所以缓冲区中不会遗留换行符。
2.puts()函数原型:
#include <stdio.h>
int puts( const char *string );
*** 返回值:成功返回非负值,失败返回EOF
#include <stdio.h>
int main()
{
char s[20] = {0};
printf("请输入:");
gets(s);
int a = puts(s);
printf("%d\n", a);
return 0;
}
//结果:
//请输入:aaa asss
//aaa asss
//0