C语言字符串和字符数组有什么区别,怎么定义空的字符串和字符数组

比如现在有字符串*a="abcd";*b="bcdef"。我想要定义一个空的字符串或者字符数组C来储存接收到的字符串;然后让字符串C分别与字符串a和b进行比较看是否相等。... 比如现在有字符串 *a="abcd" ;*b="bcdef" 。我想要定义一个空的字符串或者字符数组C来储存接收到的字符串;然后让字符串C分别与字符串a和b进行比较看是否相等。
那C是定义为字符串还是字符数组呢?最好可以用strcmp函数比较的
注意::不是字符串数组

谢谢各位
展开
 我来答
fnwzk
2011-04-21 · TA获得超过494个赞
知道小有建树答主
回答量:400
采纳率:0%
帮助的人:435万
展开全部
首先,C必然定义为字符数组,C语言没有定义字符串的关键字,C语言用字符数组处理字符串。如果需要动态长度字符串必须用字符指针实现。我写了一个类似的程序。
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
int main(void) {
const int SIZE_INC=16;
char *a="abcd";
char *b="bcdef";
char *astr, *cptr;
char ch, ich;
int csize=0, cread=0;
// 读入未知长度字符串,以回车或者EOF结束
printf("Input a string:\n");
cptr = astr = (char *)malloc(SIZE_INC);
csize = SIZE_INC;
ich = getchar();
for (;;) {
if (ich == '\n' || ich == EOF)
ch = '\0';
else
ch = ich;
if (cread == csize) {
astr = (char *)realloc(astr, csize + SIZE_INC);
csize += SIZE_INC;
cptr = astr + cread;
}
*cptr = ch;
if (ch == '\0') break;
cread++; cptr++;
ich = getchar();
}
if (!strcmp(astr,a))
printf("The string you input equals string a.\n");
else if (!strcmp(astr,b))
printf("The string you input equals string b.\n");
else
printf("Your string is: %s\n",astr);
system("pause");
return 0;
}
匿名用户
2011-04-21
展开全部
字符串和字符数组还是有一点区别的:字符串必须以'\0'结尾,而字符数组则不一定,不过如果你用字符串来初始化字符数组时,'\0'也会被加到数组结尾,所以数组长度是字符串长度+1
你所说的情况应该两个都可以用。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
乌雅轶00s
2011-04-21
知道答主
回答量:28
采纳率:0%
帮助的人:0
展开全部
定义一个字符数组,这是一个简单有效的方法,其实操作一般都是针对地址进行的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
777999666qhw
2011-04-21 · TA获得超过4871个赞
知道大有可为答主
回答量:5615
采纳率:25%
帮助的人:4598万
展开全部
字符串 会有结束符,字符数组没有.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wangjingIloveu
2011-04-21
知道答主
回答量:1
采纳率:0%
帮助的人:0
展开全部
字符串一定是以\0结尾的,字符数组就不一定了。
对于上面的问题,你要定义一个指针。即字符串,而不是字符数组。
#include<stdio.h>
int myCompare(char *receive,char *aOrb)
{
return strcmp(receive,aOrb);
}
int main()
{
char *a="abcd",*b="bcdef";
char *receive=(char *)malloc(100);
/*或者char receive[100];*/
scanf("%s",receive);
if(myCompare( receive,a)==0)
{
printf("接受到的和a相等");
}
if(myCompare( receive,b)==0)
{
printf("接受到的和a相等");
}
getch();
return 0;
}
追问
程序中C是用来接收字符串的,通过中断接收。但是每次进入中断就只能存储一个字符,当把整个字符串接收完毕时才进行比较。
现在不解的是:怎么定义个空的字符串(长度不定)或者数组-------然后每次中断存储一个字符--------如何判断字符串接收完毕了(重点)
非常感谢
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wanfustudio
2011-04-21 · TA获得超过1万个赞
知道大有可为答主
回答量:5513
采纳率:100%
帮助的人:3665万
展开全部
int len = strlen(a)+strlen(b)+1;
char *str =(char *)malloc(len);
if(str !=NULL)
{
memset(str,0,len);
strcpy(str,a);
strcat(str,b);
if(strcmp(str,a) ==0)
{}
else if(strcmp(str,b)==0)
{}
}
追问
其实我是希望C用来储存输入的字符;
rdata[ByteSize]=UDR; //UDR为接收到的字符,UDR一次只传输一个字符!!
ByteSize++;
if(rdata[ByteSize]=='\0') \\接收结束时进入比较。请问这里有错吗?
{
if(strcmp(rdata,Get_Data)==0)
flag=1;
if(strcmp(rdata,Transmit_On)==0)
.............
那如果是定义一个空的字符数组呢?怎么定义
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式