linux与window的\r与\n

应用程序
void niuniu(void)
{
	char buf[16];
	char *p[6];
	int i;

	led_init();
	uart_init();

	while(1)
	{
		puts("\r\nuart> ");
		gets(buf);
		// 去掉\r\n
		buf[strlen(buf)-2] = '\0';
		// strtok函数会使用全局变量
		p[0] = strtok(buf, " ");
		for(i=1; p[i-1]!=NULL; i++)
		{
			p[i] = strtok(NULL, " ");
		}
		if(strcmp(p[0], "ledon") == 0)
		{
			if(strcmp(p[1], "all") == 0)
			{
				for(i=1; i<5; i++)
				{
					led_on(i);
				}
			}
			else
			{
				for(i=1; p[i]!=NULL; i++)
				{
					led_on(*p[i]-48);
				}
			}
		}
		if(strcmp(p[0], "ledoff") == 0)
		{
			if(strcmp(p[1], "all") == 0)
			{
				for(i=1; i<5; i++)
				{
					led_off(i);
				}
			}
			else
			{
				for(i=1; p[i]!=NULL; i++)
				{
					led_off(*p[i]-48);
				}
			}
		}
	}
}
#endif
///////////驱动程序
#if UART==1
void uart_init(void)
{
	// 选择GPH2和GPH3的功能为UART
	GPH.GPHCON = ((~(0xf<<4))&GPH.GPHCON)|(0xa<<4);

	// 配置UART0为,8位数据,无校验,1位停止位,正常模式
	UART0.ULCON0 = 0x3;
	// 配置UART0为,中断或者轮巡方式
	UART0.UCON0 = 0x5;
	// 配置UART0为,波特率9600
	// 12M/(9600*16)-1
	UART0.UBRDIV0 = 0x4d;
}

void putc(char c)
{
	// 数据放入发送保持寄存器,然后在波特率协调下,发送移位器把保持寄存器中的数据一位一位的发送出去
	UART0.UTXH0 = c;

	// 等待发送保持寄存器中的数据发送完毕
	while(!(UART0.UTRSTAT0&(0x1<<1)))
	{
	}
}

void puts(char *s)
{
	while(*s != '\0')
	{
		putc(*s++);
	}
}

char getc(void)
{
	while(!(UART0.UTRSTAT0&(0x1<<0)))
	{
	}

	return UART0.URXH0;
}

void gets(char *s)
{
	// kermit按下enter时,发送\r
	do
	{
		*s = getc();
		// kermit不会显示它发送的数据
		putc(*s);
	}while(*s++ != '\r');

	// kermit软件\r回车\n换行
Linux下虽然回车只有一个\n,但是\n起到了两个效果。
_______________________________________________________________________________
	*s++ = '\n';
	// puts需要\0
	*s = '\0';
}
#endif
//////////////////////////////
Linux下
\r代表回车(回到行首)
\n  代表换行(下一行,当前位置)
puts("\r\n uart> ");//直接调用puts函数,后边自动有一个\0
char buf[16];   gets(buf);

当你在kermit下主动输入一个ledon 1时,会自动被这个函数获取,但是获取的是ledon \r
(\r是你在kermit环境下,自己按回车加上去的)
然后gets函数会自动在后边加一个\n\0.
////////////

Puts(“>>>>>\r1234”);
Puts(“<<<<<<\r\n5678”);
Puts(“+++++++\ntttt”);
结果
1234<<<<<<
5678++++++++++++
              tttt
//////////////////////////
Windos 环境下,写一个yan.txt
当输入一个1,回车,
当输入一个2,回车,
当输入一个3的时候,保存退出。
然后放到linux里边,命令od -c yan.txt
结果
    1  \r  \n   2  \r  \n   3
命令  ls -l |grep yan.txt
-rwxr-xr-x  1 lh   lh           7    2014-09-18 09:01 yan.txt
只有七个字节。
Linux环境下,写一个piao
当输入一个1,回车,
当输入一个2,回车,
当输入一个3的时候,保存退出。(这里确实没有输入回车)
命令  ls  -l |grep piao
结果 -rw-r--r--  1 lh   lh           6   2014-09-18 09:07 piao
命令    od -c piao
结果  1  \n   2  \n   3  \n
Linux环境下,写一个piao2 
当输入一个1,回车,
当输入一个2,回车,
当输入一个3的时候,出车,保存退出。
命令  ls  -l |grep piao2
结果 -rw-r--r--  1 lh   lh           7   2014-09-18 09:07 piao
命令    od -c piao2
结果  1  \n   2  \n   3  \n   \n

  

posted @ 2016-06-21 19:30  飘然离去  阅读(484)  评论(0编辑  收藏  举报