字符输入
下列函数用来输入一个字符:
#include <stdio.h>
int fgetc(FILE *stream);
int getc(FILE *stream); //宏
int getchar(void);
读取结果:成功时返回读取的字符;若到文件末尾或出错时返回EOF(-1),
getchar()等同于fgetc(stdin)
getc和fgetc区别是一个是宏一个是函数
输入字符函数:fgetc()
#include <stdio.h>
int main(int argc, const char *argv[])
{
FILE *fp;
int rec;
fp = fopen("1.txt", "r");//打开文件
if (fp == NULL) {
perror("fopen");//打开失败提醒信息
return 0;
}
rec = fgetc(fp);//读取字符
if (rec == -1) {
perror("fgetc:");//读取失败提示信息
fclose(fp);
return 0;
}
printf("Get char = %c\n", rec);
rec = fgetc(fp);//验证是接着上一个字符读取
printf("Get char = %c\n", rec);
fclose(fp);//关闭文件
fp = fopen("1.txt", "r");//再次打开文件,为了验证再次打开后,又重新开始读取
if (fp == NULL) {
perror("fopen");
return 0;
}
rec = fgetc(fp);//重新开始读取
printf("Get char = %c\n", rec);
rec = fgetc(fp);//验证是接着上一个字符读取
printf("Get char = %c\n", rec);
fclose(fp);
return 0;
}
输出结果:
Get char = a
Get char = b
Get char = a
Get char = b
输入字符函数:getchar()
#include <stdio.h>
int main(int argc, const char *argv[])
{
FILE *fp;
int rec;
fp = fopen("1.txt", "r");
if (fp == NULL) {
perror("fopen");
return 0;
}
rec = getchar();
printf("Getchar STD input = %c:\n", rec);
fclose(lp);
return 0;
}
输出结果:
b
Getchar STD input = b:
注意:
- 1、函数返回值是int类型不是char类型,主要是为了扩展返回值的范围。
- 2、stdin 也是FILE *的指针,是系统定义好的,指向的是标准输入(键盘输入)。
- 3、打开文件后读取,是从文件开头开始读。读完一个后读写指针会后移。读写注意文件位置!
- 4、调用getchar会阻塞,等待你的键盘输入,在这个例子中,直到从键盘输入字符'b'时,才显示Getchar STD input = b。
字符输出
下列函数用来输出一个字符:
#include <stdio.h>
int fputc(int c, FILE *stream);
int putc(int c, FILE *stream);
int putchar(int c);
输出结果:成功时返回写入的字符;出错时返回EOF(-1)
putchar(c)等同于fputc(c, stdout)
输出字符函数:fputc()
#include <stdio.h>
int main(int argc, const char *argv[])
{
FILE *fp;
int rec;
int wrc = 'w';
fp = fopen("1.txt", "r");//打开文件
if (fp == NULL) {
perror("fopen");//打开失败提醒信息
return 0;
}
rec = fputc(wrc, fp);//写入字符
if (rec == -1) {
perror("fputc");
fclose(fp);
return 0;
}
putchar(rec);//输出到屏幕
puts("");
fclose(fp);
return 0;
}
运行结果:
fputc: Bad file descriptor
出现该错误的原因是用只读模式'r'打开的文件,将打开模式改为读写模式‘w+’或者‘a+’即可解决问题,例如把打开模式改成‘w+’,即:
fp = fopen("1.txt", "w+");//打开文件
原来存储‘abcdefg‘’的1.txt文件,被重新写入为‘w’字符。
输出字符函数:putchar()
直接将字符输出到屏幕,如上面的代码,直接输出结果为:
w
注意:
- 1、返回和输入参数都是int类型
- 2、遇到这种错误:Bad file descriptor, 很可能是文件打开的模式错误(只读模式去写,只写模式去读)