欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

关于C语言编程时字符缓冲的一些问题与解答

程序员文章站 2024-01-27 08:06:28
...

关于C语言编程时遇到的一些问题

1.C语言中字符缓冲问题

源代码如下

void writeFile()
{
	FILE *fileP;
	int ch;
      char *fileName;      //保存在工程目录下
	printf("请输入文件名:");
	scanf("%s",fileName);
	fileP = fopen(fileName,"r"); //以read
	if(fileP == NULL)
	{
		printf("该文件不存在!\n");
	}else{
		fileP = fopen(fileName,"w");
		fprintf(fileP,"yes you are right !");
	}
}

如上代码,当主函数进行调用时,会出现如下问题
关于C语言编程时字符缓冲的一些问题与解答
原因是缓冲区未清空,系统将输入的字符全部读入。

解决方法
在printf后面加入如下代码

		while((ch = getchar()) != '\n' && ch != EOF);

总体代码展示

void writeFile()
{
	FILE *fileP;
	int ch;
      char *fileName;      //保存在工程目录下
	printf("请输入文件名:");
	scanf("%s",fileName);
	fileP = fopen(fileName,"r"); //以read
	if(fileP == NULL)
	{
		printf("该文件不存在!\n");
		while((ch = getchar()) != '\n' && ch != EOF);
	}else{
		fileP = fopen(fileName,"w");
		fprintf(fileP,"yes you are right !");
	}
}

这样即可完成缓冲区的清除
也可以将以上代码进行封装,方便日后使用

#define CLEAR_BUF \
    {\
    int ch; \
while ((ch = getchar()) != EOF && ch != '\n')\
        {\
        ; \
        }\
    }

相关标签: C语言字符缓冲