c语言字符数组和字符串的使用详细信息. doc
用MSP430F149单片机开发GSM模块变压器报警系统学习笔记本
2015年1月29日18:15:20
目录:
GSM模块总是向串行端口发送信息
键中断无法结束的问题
闪存写入问题
字符数组和字符串的连接问题。
字符数组和字符串参考
1、GSM模块总是向串行端口发送信息
发送的数据如下图所示。
问题的原因是GSM模块频繁重新启动,部分原因是电脑USB接口电压不稳定,GSM模块工作不足,导致频繁重新启动。 这需要后期注意。
2、键中断不能结束的问题
按钮是普通的中断,但是有进入中断也不能结束的问题。 这个问题在于延迟函数。 我选择的延迟函数正在利用计时器。 无法结束中断,因为此函数可能在中断函数中影响了中断标志。
解决方法是使用普通的延迟函数,不用计时器就可以了。
3、闪存写入问题
在写入Flash中,使用的是别人写的库函数。 这个库函数有问题。 问题是,每次写1位数据时,都会相应地清除前面的数据。
例如,在F0x1000的位置书写文字“a”,在F0X1001的位置书写文字“b”,在F0X1002的位置书写文字“c”。 结果是“c”。 以前的所有数据都变成了0X00,被清空了。 让我们看一下步骤:
(voidflash_writeb(uchar*address,uchar data8) ) ) ) ) ) ) )。
{
//FCTL1=0xA5000x0002; //允许清除
FCTL3=0xA500; //解除锁定
//*地址=0; //开始清除
FCTL1=0xA5000x0040; //允许写作
*地址=data 8; //写入数据
FCTL1=0xA500;
FCTL3=0xA5000x0010; //锁定
}
这是因为擦除命令已打开,擦除命令已清除了所有原始数据。 本来,这个清除指令应该只是清除一个地方的数据,但是其他地方的数据都被清除了。 因此,通过修改原始函数并禁止清除原始函数的内容,在将解决了其他问题的数据写入新数据时会被清除。
4、字符数组与字符串的拼接问题。
首先,怎么连接字符串?
我使用的方法是(包括string.h头文件) ) )。
uchar test1[11];
Uchar *set=”SET”;
Uchar *read=”READ”;
strcpy(test1,set );
strcat(test1、read );
第一条语句将set字符串的内容复制到test1。 然后,使用第二个命令将第二个字符连接到第一个字符串。 连接时,会自动删除第一个字符串末尾的“ 0”,并在重新连接的字符串后面添加“ 0”。
我用字符串数组替换set部分时,即uchar set[11]; 时,用同样的方法连接字符串结果相似,但不能使用结尾识别字符串发送函数“ 0”的函数。
因为字符数组的默认值不包含“ 0”。 字符数组u charset [3]={‘s’、‘e’、‘t’}; 定义和赋值方法,以及uchar set[3]; 在这个定义方式中,实际的有效数据是3,字符排列的长度也是3。 此字符数组的末尾没有“ 0”。 因此,发送函数发生了错误。
我应该怎么定义字符数组? 必须将“ 0”添加到字符数组的最后一位,以防止函数出错。 可以定义如下:
uchar set[4]=' ';
我们给了字符数组很多一位数的空间。 此空间用于存储字符数组为“ ”的字符。 我们定义的时候,给字符数组分配了空字符串。 这样,所有字符串的末尾都必须为“ ”。 因此,我们的字符数组set[3]的数据必须为“ ”。 除非用后处理函数修改此位的数据,否则我们得到的最新字符数组末尾有“ ”
当然,在拼接的时候,需要再次强制切换。 如下所示。
strcpy () char* ) at_phone,) const char * ) at_phone1);
strcat(char* ) at_phone,) const char * (phone buff2);
strcat(char* ) at_phone,) const char * ) at_phone3);
URT_putstr(0,) char * (at _ phone );
以下是字符数组和字符串的参考资料。
有关使用c语言字符数组和字符串的详细信息
本文详细分析并介绍了c语言中字符数组和字符串的使用,有需要的朋友可以参考
1、字符数组的定义和初始化字符数