linux与window的\r与\n
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 | 应用程序 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 |
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步