gpt4 book ai didi

数组到字符串的转换

转载 作者:行者123 更新时间:2023-11-30 14:24:07 24 4
gpt4 key购买 nike

`#include<reg51.h>
#include<string.h>
#include"_LCD_R8C.c"
unsigned char c[11];
void serial_int (void) interrupt 4
{
static unsigned char chr[11];
int i,j;
if (RI==1)
{
RI = 0;
TI = 0;
chr[11] = SBUF;
for(j=0;j<1;j++)
{
for(i=0;i<=10;i++)
{
c[i]=chr;
}
c[11]='\0';
}
}
}
int main()
{
unsigned char a[2][11]={"$0016221826","$0123456789"};
int i,j;
lcd_init();
lcd_clear();
SCON = 0x50;
TMOD = 0x20;
TH1 = 0xFD;
ET0 = 0;
TR1 = 1;
RI = 1;
ES = 1;
EA = 1;
for(i=0;i<=1;i++)
{
**j=strcmp(a,c);**
if(j==0)
{
lcd_printxy(1,1,"yes");
}
else
{
lcd_printxy(1,6,"no");
}
}
}`

编译器在第 55 行(粗体)给出警告:指向不同对象的指针。数组到字符串的转换怎么样?这是对的吗?接收到的字符串应与可用的字符串数组进行比较..

最佳答案

创建一个包含字符串的数组,例如

char foo[] = "bar";

其实和下面的一样

char foo[] = { 'b', 'a', 'r', '\0' };

或以下内容

const char *foo = "bar";

这个变量 foo 可以用作数组(即第二个字母是 foo[1]),也可以用作可以传递给函数的指针(如 strlen(foo) 将返回 3)。

因此,从程序的角度来看,字符数组或字符指针是等效的,只是不能分配给字符数组,但可以分配给指针。所以下面的内容是可以的:

char foo[] = "bar";
char *pfoo = foo;

但这不行:

const char *pfoo = "bar";
char foo[] = pfoo; /* Error! */

字符数组和字符指针之间还有一个不同之处:对字符数组使用 sizeof 运算符会返回数组中的字符数(包括终止零),但在一个字符指针,它返回指针的大小。

示例:

char foo[] = "foo";
const char *bar = "bar";

printf("sizeof(foo) = %lu\n", sizeof(foo));
printf("strlen(foo) = %lu\n", strlen(foo));
printf("sizeof(bar) = %lu\n", sizeof(bar));
printf("strlen(bar) = %lu\n", strlen(bar));

如果在 64 位机器上运行上面的代码(其中指针是 8 个字节),它将打印:

sizeof(foo) = 4strlen(foo) = 3sizeof(bar) = 8strlen(bar) = 3

关于数组到字符串的转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12210406/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com