前言
以下是
<cstdio>
对字符、字符串的输入输出。
1、fgetc
int fgetc ( FILE * stream );
/*
* @func:从流中获取字符;
* @param stream:指向标识输入流的FILE对象的指针;
* return:返回读取的字符(int);返回类型为INT为特殊值,以适应EOF,其指示故障:
*/
案例
void Demo_fgetc(){
char ch;
FILE * fp = fopen("test.txt", "r"); // 打开文件
while ((ch=fgetc(fp)) != EOF) // 逐个读取字符
{
printf("%c", ch);
}
fclose(fp);
}
2、fgets
char * fgets ( char * str, int num, FILE * stream );
/*
* @func:从流中获取字符串,遇到换行结束,且读入换行;
* @param str:指向标识输入流的FILE对象的指针;
* @param num:字符串个数,读取到num-1个;
* @param stream:指向标识输入流的FILE对象的指针;stdin可以用作从标准输入读取的参数;
* return:返回str,文件末尾返回EOF,错误返回NULL;
*/
案例
void Demo_fgets(){
FILE *fp = fopen("test.txt", "r");
char buf[1024] = { 0 };
while (fgets(buf, 1024, fp) != NULL)
{
printf("%s", buf);
}
fclose(fp);
}
3、fputc
int fputc ( int character, FILE * stream );
/*
* @func:将字符写入流;
* @param character:写入时,该值在内部转换为unsigned char;
* @param stream:指向标识输出流的FILE对象的指针;
* return:成功返回写入字符,失败返回EOF;
*/
案例
void Demo_fputc(){
char *arr = "I like ...";
FILE * fp = fopen("test.txt", "w"); // 以写的方式打开文件
while (*arr != '\0')// 判断字串是否结束
{
fputc(*arr, fp);
printf("%4c", *arr);
arr++;
}
fclose(fp);
}
4、fputs
int fputs ( const char * str, FILE * stream );
/*
* @func:将字符串写入流,直到\0;
* @param str:包含要写入stream的内容的C 字符串;
* @param stream:指向标识输出流的FILE对象的指针;
* return:成功返回非负值,失败返回EOF;
*/
案例
void Demo_fputs(){
// 创建二维数组
char *arr[2] = {
"test one\n",
"test two"
};
FILE * fp = fopen("test.txt", "w"); // 以写入的方式打开文件
for (int i = 0; i < 2; ++i){
fputs(arr[i], fp); // 将字符串写入文件
printf("%s", arr[i]);
}
fclose(fp);
}
5、getchar
int getchar ( void );
/*
* @func:从标准输入获取字符;
* return:成功返回读取的字符,失败返回EOF;
*/
案例
void Demo_getchar(){
char ch;
while ((ch = getchar()) != '#') // 输入字符,#号键结束
{
/*
由于getchar会读入\n,故将\n过滤
*/
if (ch == '\n')
continue;
printf("%c\n", ch);
}
}
6、gets 注:C11已弃用
char * gets ( char * str );
/*
* @func:从标准输入获取字符串,直到换行符或者到文件结尾,不会添加换行符,自动添加\0;
* @param str:指向内存块(字符数组)的指针,其中读取的字符串被复制为C 字符串;
* return:成功返回读取的字符,失败返回EOF;
*/
案例
void Demo_gets(){
char buf[1024];
printf("请输入字符串:");
gets(buf);
printf("%s\n", buf);
}
7、putc
int putc ( int character, FILE * stream );
/*
* @func:写入一个字符到流和前进位置指示器;
* @param character:int类型,在内部换转化成无符号字符型;
* @param stream:指向标识输出流的FILE对象的指针;
* return:成功返回写入字符,失败返回EOF;
*/
案例
char c;
FILE *fp= fopen("test.txt", "w");
for (c = 'A'; c <= 'C'; c++) {
putc(c, fp);
}
fclose(fp);
8、putchar
int putchar ( int character );
/*
* @func:将字符写入标准输出;
* @param character:值在内部转换为无符号字符;
* @param stream:指向标识输出流的FILE对象的指针;
* return:成功返回写入字符,失败返回EOF;
*/
案例
void Demo_putchar(){
char ch;
for (ch = 'A'; ch <= 'C'; ch++) {
putchar(ch);
}
}
9、puts
int puts ( const char * str );
/*
* @func:将字符串写入标准输出;
* @param str :要打印的字符串;
* return:成功返回非负值,失败返回EOF;
*/
案例
void Demo_puts(){
char *arr = "test puts";
puts(arr);
}