清除缓存区的错误数据

处理非法数据

常常用于清除缓存区的字符的语法

while(getchar()!='\n');/*清除缓存区的非法字符*/
fflush(stdin);/*清除缓存区的错误数据*/

问题:输入两个整型数,计算并输出两个整数的最大值。如果用户不慎输入了非法字符,那么程序可提示“‘输入数据个数或格式错误”
这个简单程序就用到了fflush

#include<stdio.h>
main()
{
	int a,b,max,ret;
	printf("input a,b:");
	ret=scanf("%d,%d",&a,&b);
	if(ret!=2)
	{
		printf("input data quantity or format error!\n");
		fflush(stdin);
	}
	else
	{
		max=a>b?a;b;
		printf("max=%d\n",max);
	}
}
一个能猜十次的猜数小程序代码

这之中就用到了whlie(getchar()!=’\n’)

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
main()
{
	int magic,guess,counter;
	int ret;
	srand(time(NULL));
	magic=rand%100+1;/* magic取随机数*/
	do{
		printf("please guess a magic number:");
		ret=s
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要从接收缓冲区读取更多的数据,你需要在每次断处理函数读取接收寄存器的数据,并将其存储到一个更大的缓冲区。以下是一个修改后的示例代码: ```c #include "F2806x_Device.h" // 包含TMS320F28069的设备头文件 #define BUFFER_SIZE 100 // 接收缓冲区大小 Uint16 rxBuffer[BUFFER_SIZE]; // 接收缓冲区 Uint16 rxIndex = 0; // 接收缓冲区索引 interrupt void UARTISR(void) { if (UARTSTSbits.RXINT == 1) // 检查接收断标志位 { while (UARTSTSbits.RXRDY == 1 && rxIndex < BUFFER_SIZE) // 检查接收数据就绪标志位和缓冲区是否已满 { rxBuffer[rxIndex] = UARTRD; // 从UART接收数据寄存器读取数据 rxIndex++; } if (rxIndex >= BUFFER_SIZE) // 缓冲区已满,做相应处理 { // 处理接收到的数据 // ... rxIndex = 0; // 重置缓冲区索引 } UARTSTSbits.RXINTCLR = 1; // 清除接收断标志位 } // 处理其他断事件 asm(" NOP"); // 空指令,防止编译器优化断向量表 } int main(void) { // 初始化UART模块 UARTCTLbits.SWRESET = 1; // 复位UART模块 UARTCTLbits.RXENA = 1; // 启用接收 UARTCTLbits.RXRDY = 0; // 清除接收数据就绪标志位 UARTCTLbits.RXINTENA = 1; // 启用接收断 // 配置断向量表 EALLOW; PieVectTable.SCIRXINTA = &UARTISR; // 将断处理函数指定给UART接收断 EDIS; // 使能全局断 EINT; // 其他初始化操作... while (1) { // 主程序循环 } } ``` 在修改后的代码,我添加了一个 `while` 循环,它会在每次断处理函数检查接收数据就绪标志位和缓冲区是否已满。只要接收数据就绪并且缓冲区未满,就会连续读取接收寄存器的数据并存储到缓冲区。这样可以确保尽可能多地读取数据。 请注意,根据你的需求和应用场景,你可能需要对代码进行进一步的调整和优化。例如,加入超时机制、错误处理等。此外,请根据实际情况调整接收缓冲区的大小,确保它足够大以容纳你期望的数据量。 建议参考TMS320F28069的技术手册、参考手册或相关开发工具的文档,以获取更详细的使用指南和示例代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值