打印

请教一个程序

[复制链接]
1140|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
hello某人|  楼主 | 2009-3-19 22:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
ST, AN, LAN, ge, TE

下面的程序输出为什么是C LANGUAG而不是C LANGUAGE?后面哪个E为什么没了?放到VS C++下运行有后面的E。 
#include "reg52.h"
#include<stdio.h>
#define LETTER 1
void main()
{char str[20]="C Language",c;int i=0;
SCON=0x50;
TMOD=0x20;
TH1=221;
TR1=1;
TI=1;
  while((c=str)!='\0')
  {i++;
  #if LETTER
   if(c>='a'&&c<='z')c=c-32;
  #else
   if(c>='A'&&c<='Z')c=c+32;
  #endif
   printf("%c",c);
  }
}

相关帖子

沙发
hotpower| | 2009-3-19 22:07 | 只看该作者

sizeof(str)看看

使用特权

评论回复
板凳
oumi| | 2009-3-20 10:46 | 只看该作者

re:hotpower

sizeof(str)不就是20吗

使用特权

评论回复
地板
原野之狼| | 2009-3-20 11:07 | 只看该作者

比较怪异,应该不是逻辑的问题。

检查下寄存器配置部分的代码
还有检查下硬件。

使用特权

评论回复
5
oumi| | 2009-3-20 11:28 | 只看该作者

4楼

他这个应该是软件模拟的吧,printf可以从串口输出吗?没玩过,只知道会打印到软件模拟串口的那个界面。

使用特权

评论回复
6
xwj| | 2009-3-20 11:35 | 只看该作者

因为串口发送是需要时间的!

你的主循环后面没有东西,此时程序要么跑飞妖媚就重新开始了,
而此时串口最后一字节数据还没发完,但程序已经重新开始又去执行了初始化程序,所以最后一个字节实际上值发出了一半,当然会收不到。

主循环里面一定要有个死循环哦,不然就又重新开始了。

你的程序在循环后面加个while(1);即可。

使用特权

评论回复
7
oumi| | 2009-3-20 11:56 | 只看该作者

楼上正解

怪自己不心细

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

18

主题

298

帖子

2

粉丝