关于在KEIL中对字符数组赋值字符串操作的奇怪问题?
我在KEIL中针对单片机编写程序时,遇到一个奇怪的问题。在主程序中对一个字符数组赋值操作,总是提示如下警告!“APP.C(23):warningC260:'=':poin...
我在KEIL中针对单片机编写程序时,遇到一个奇怪的问题。
在主程序中对一个字符数组赋值操作,总是提示如下警告!
“APP.C(23): warning C260: '=': pointer truncation” 说明指针被截断!多次试验发现原因不是数组长度不足,无论数组长度多长都提示同样的警告!
试验发现,对数组赋的值也不正确!
我将“c[10]="ABC";” 而实际存入数组的数值根本不是"ABC"!!
请问如何在KEIL中执行对字符数组的操作? 请网友帮忙解答!
我的程序需要在程序执行时对字符数组,赋值字符串变量!如果单独一个个的赋值会很麻烦!有没有别的方法可以完成的程序设计目的?比如KEIL的库里是否有支持的函数? (malloc)?或者只能通过指针来实现?请网友根据自身的经验来解答! 展开
在主程序中对一个字符数组赋值操作,总是提示如下警告!
“APP.C(23): warning C260: '=': pointer truncation” 说明指针被截断!多次试验发现原因不是数组长度不足,无论数组长度多长都提示同样的警告!
试验发现,对数组赋的值也不正确!
我将“c[10]="ABC";” 而实际存入数组的数值根本不是"ABC"!!
请问如何在KEIL中执行对字符数组的操作? 请网友帮忙解答!
我的程序需要在程序执行时对字符数组,赋值字符串变量!如果单独一个个的赋值会很麻烦!有没有别的方法可以完成的程序设计目的?比如KEIL的库里是否有支持的函数? (malloc)?或者只能通过指针来实现?请网友根据自身的经验来解答! 展开
4个回答
展开全部
嗯,这个问题我也遇见过,在其他的编程环境是可以这样赋值的,但在keil中是非法的,我解决的方法如下:
假如说你要程序执行时对a[]字符赋值:你可以先将可能出现的或者要用的字符串,在开始定义的时候,赋值给b[],c[],d[]....数组,程序执行的时候再来判断,是将b[]数组,还是c[]数组,或者其他数组赋给a[].例子如下:
#include<reg52.h>
void main()
{
string a[50];
char b1[50]="this is 89s51";
char b2[50]="this is lcd";
char b3[50]="welcome to the 8051";
if(这里写你的控制条件)
a[50]=b1[50];
if(这里写你的控制条件)
a[50]=b2[50];
if(这里写你的控制条件)
a[50]=b3[50];
}
假如说你要程序执行时对a[]字符赋值:你可以先将可能出现的或者要用的字符串,在开始定义的时候,赋值给b[],c[],d[]....数组,程序执行的时候再来判断,是将b[]数组,还是c[]数组,或者其他数组赋给a[].例子如下:
#include<reg52.h>
void main()
{
string a[50];
char b1[50]="this is 89s51";
char b2[50]="this is lcd";
char b3[50]="welcome to the 8051";
if(这里写你的控制条件)
a[50]=b1[50];
if(这里写你的控制条件)
a[50]=b2[50];
if(这里写你的控制条件)
a[50]=b3[50];
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你所谓的“运行时赋字符串变量”,这个字符串哪里来的?
1. 固定的字符串。那么应当是常量数组,直接以字符拷贝即可;
2. 变长的字符串,例如来自串口。指针拷贝自串口缓冲区。
1. 固定的字符串。那么应当是常量数组,直接以字符拷贝即可;
2. 变长的字符串,例如来自串口。指针拷贝自串口缓冲区。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
c[10]="ABC"; 改成 c[]="ABC";
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询