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

2024-12-29 20:25:15
推荐回答(4个)
回答1:

字符串只能在定义的时候初使化。如果在程序执行时要对其值只能单独操作,即只能单独赋值,或是循环赋值!
例如:
int c[10] = "abc";

int c[10];
....//其他执行代码
c[0] = 'a';
c[1] = 'b';
c[2] = 'c';
c[3] = '\0' ;

回答2:

嗯,这个问题我也遇见过,在其他的编程环境是可以这样赋值的,但在keil中是非法的,我解决的方法如下:
假如说你要程序执行时对a[]字符赋值:你可以先将可能出现的或者要用的字符串,在开始定义的时候,赋值给b[],c[],d[]....数组,程序执行的时候再来判断,是将b[]数组,还是c[]数组,或者其他数组赋给a[].例子如下:
#include
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];
}

回答3:

你所谓的“运行时赋字符串变量”,这个字符串哪里来的?
1. 固定的字符串。那么应当是常量数组,直接以字符拷贝即可;
2. 变长的字符串,例如来自串口。指针拷贝自串口缓冲区。

回答4:

c[10]="ABC"; 改成 c[]="ABC";