关于在KEIL中对字符数组赋值字符串操作的奇怪问题?

我在KEIL中针对单片机编写程序时,遇到一个奇怪的问题。在主程序中对一个字符数组赋值操作,总是提示如下警告!“APP.C(23):warningC260:'=':poin... 我在KEIL中针对单片机编写程序时,遇到一个奇怪的问题。

在主程序中对一个字符数组赋值操作,总是提示如下警告!
“APP.C(23): warning C260: '=': pointer truncation” 说明指针被截断!多次试验发现原因不是数组长度不足,无论数组长度多长都提示同样的警告!
试验发现,对数组赋的值也不正确!
我将“c[10]="ABC";” 而实际存入数组的数值根本不是"ABC"!!
请问如何在KEIL中执行对字符数组的操作? 请网友帮忙解答!
我的程序需要在程序执行时对字符数组,赋值字符串变量!如果单独一个个的赋值会很麻烦!有没有别的方法可以完成的程序设计目的?比如KEIL的库里是否有支持的函数? (malloc)?或者只能通过指针来实现?请网友根据自身的经验来解答!
展开
 我来答
__B_K
推荐于2017-12-15
知道答主
回答量:13
采纳率:0%
帮助的人:0
展开全部
字符串只能在定义的时候初使化。如果在程序执行时要对其值只能单独操作,即只能单独赋值,或是循环赋值!
例如:
int c[10] = "abc";

int c[10];
....//其他执行代码
c[0] = 'a';
c[1] = 'b';
c[2] = 'c';
c[3] = '\0' ;
pengyihan456
2011-03-15
知道答主
回答量:26
采纳率:0%
帮助的人:0
展开全部
嗯,这个问题我也遇见过,在其他的编程环境是可以这样赋值的,但在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];
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
一剑出血
高粉答主

2011-03-16 · 醉心答题,欢迎关注
知道大有可为答主
回答量:5.7万
采纳率:78%
帮助的人:1.7亿
展开全部
你所谓的“运行时赋字符串变量”,这个字符串哪里来的?
1. 固定的字符串。那么应当是常量数组,直接以字符拷贝即可;
2. 变长的字符串,例如来自串口。指针拷贝自串口缓冲区。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
keita0223
2011-03-15 · 超过18用户采纳过TA的回答
知道答主
回答量:59
采纳率:0%
帮助的人:61.1万
展开全部
c[10]="ABC"; 改成 c[]="ABC";
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式