C语言字符串和字符数组有什么区别,怎么定义空的字符串和字符数组 C语言中如何定义一个字符串和一个字符数组?

C\u8bed\u8a00\u7684\u5b57\u7b26\u6570\u7ec4\u548c\u5b57\u7b26\u4e32\u7684\u533a\u522b

1\u3001\u957f\u5ea6\u4e0d\u540c\uff1a
\u5bf9\u4e8e\u5b57\u7b26\u6570\u7ec4\uff0c\u5176\u957f\u5ea6\u662f\u56fa\u5b9a\u7684\uff0c\u5176\u4e2d\u4efb\u4f55\u4e00\u4e2a\u6570\u7ec4\u5143\u7d20\u90fd\u53ef\u4ee5\u4e3a null \u5b57\u7b26\u3002\u56e0\u6b64\uff0c\u5b57\u7b26\u6570\u7ec4\u4e0d\u4e00\u5b9a\u662f\u5b57\u7b26\u4e32\u3002\u5b57\u7b26\u4e32\u7684\u7ed3\u5c3e\u662f\u4ee5null \u5b57\u7b26\u7ed3\u5c3e\uff0c\u6240\u4ee5\u957f\u5ea6\u4f1a\u6709\u6240\u4e0d\u540c\u3002
2\u3001\u7ed3\u5c3e\u4e0d\u540c
\u5bf9\u4e8e\u5b57\u7b26\u4e32\uff0c\u5b83\u5fc5\u987b\u4ee5 null \u5b57\u7b26\uff08\u4e5f\u5c31\u662f'\0'\uff0c\u7528\u5341\u516d\u8fdb\u5236\u8868\u793a\u4e3a 0x00\uff09\u7ed3\u5c3e\uff0c\u5176\u540e\u7684\u5b57\u7b26\u4e0d\u5c5e\u4e8e\u8be5\u5b57\u7b26\u4e32\u3002
\u5b57\u7b26\u4e32\u4e00\u5b9a\u662f\u5b57\u7b26\u6570\u7ec4\uff0c\u5b83\u662f\u6700\u540e\u4e00\u4e2a\u5b57\u7b26\u4e3a null \u5b57\u7b26\u7684\u5b57\u7b26\u6570\u7ec4\u3002\u5b57\u7b26\u6570\u7ec4\u5219\u4e0d\u4f1a\u81ea\u52a8\u589e\u52a0\u4efb\u4f55\u4e1c\u897f\u3002
3\u3001\u5bf9\u4e8e\u5b57\u7b26\u4e32\uff0c\u53ef\u4ee5\u76f4\u63a5\u4f7f\u7528 printf \u7684 %s \u6253\u5370\u5176\u5185\u5bb9\uff1b\u800c\u5bf9\u5b57\u7b26\u6570\u7ec4\uff0c\u5f88\u663e\u7136\u4f7f\u7528 printf \u7684 %s \u6253\u5370\u5176\u5185\u5bb9\u662f\u4e0d\u5408\u9002\u7684\u3002

\u6269\u5c55\u8d44\u6599\uff1a\u5b57\u7b26\u4e32\u51fd\u6570\u5e94\u7528
1.\u8fde\u63a5\u8fd0\u7b97 concat(s1,s2,s3\u2026sn) \u76f8\u5f53\u4e8es1+s2+s3+\u2026+sn.
\u4f8b\uff1aconcat('11','aa')='11aa';
2. \u6c42\u5b50\u4e32\u3002 Copy(s,I,I) \u4ece\u5b57\u7b26\u4e32s\u4e2d\u622a\u53d6\u7b2cI\u4e2a\u5b57\u7b26\u5f00\u59cb\u540e\u7684\u957f\u5ea6\u4e3al\u7684\u5b50\u4e32\u3002
\u4f8b:copy('abdag',2,3)='bda\u2019
3. \u5220\u9664\u5b50\u4e32\u3002\u8fc7\u7a0b Delete(s,I,l) \u4ece\u5b57\u7b26\u4e32s\u4e2d\u5220\u9664\u7b2cI\u4e2a\u5b57\u7b26\u5f00\u59cb\u540e\u7684\u957f\u5ea6\u4e3al\u7684\u5b50\u4e32\u3002
\u4f8b\uff1as:='abcde';delete(s,2,3);\u7ed3\u679cs:='ae';
4. \u63d2\u5165\u5b50\u4e32\u3002 \u8fc7\u7a0bInsert(s1,s2,I) \u628as1\u63d2\u5165\u5230s2\u7684\u7b2cI\u4e2a\u4f4d\u7f6e
\u4f8b\uff1as:=abc;insert('12',s,2);\u7ed3\u679cs:='a12bc';
\u53c2\u8003\u8d44\u6599\uff1a\u767e\u5ea6\u767e\u79d1 c\u8bed\u8a00\uff08c\u8bed\u8a00\uff09

\u5b57\u7b26\u4e32\uff1achar *p="string";
\u5b57\u7b26\u6570\u7ec4\uff1achar str[6] = {'s','t','r','i','n','g'};

首先,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;
}

字符串和字符数组还是有一点区别的:字符串必须以'\0'结尾,而字符数组则不一定,不过如果你用字符串来初始化字符数组时,'\0'也会被加到数组结尾,所以数组长度是字符串长度+1
你所说的情况应该两个都可以用。

定义一个字符数组,这是一个简单有效的方法,其实操作一般都是针对地址进行的

字符串 会有结束符,字符数组没有.

字符串一定是以\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;
}

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璇█楂樻墜~C璇█鏁扮粍闀垮害 鍜屽瓧绗︿覆闀垮害鎬庝箞鍖哄垎?
    绛旓細涓嶄竴鏍凤紝x姣攜澶氫竴涓'\0'
  • 瀛楃鏁扮粍鍙兘瀛樻斁瀛楃涓鍚
    绛旓細鍒扳9鈥濈殑瀛楃鍏冪礌銆傚洜姝わ紝C璇█涓瀛楃鏁扮粍涓嶅崟鍗曞彧鑳戒繚瀛瀛楃涓銆傚瓧绗︽暟缁勬槸鎸囩敤鏉ュ瓨鏀惧瓧绗︽暟鎹殑鏁扮粍銆傚叾瀹氫箟鐨勪竴鑸舰寮忎负锛 char 鏁扮粍鍚峓鏁版嵁闀垮害] 銆傚瓧绗︽暟缁勭敤浜庡瓨鏀惧瓧绗︽垨瀛楃涓诧紝瀛楃鏁扮粍涓殑涓涓厓绱犲瓨鏀句竴涓瓧绗︼紝瀹冨湪鍐呭瓨涓崰鐢ㄤ竴涓瓧鑺傘侰璇█涓病鏈夊瓧绗︿覆绫诲瀷锛屽瓧绗︿覆鏄瓨鏀惧湪瀛楃鍨嬫暟缁勪腑...
  • c璇█ 瀛楃鏁扮粍鍜屽瓧绗︿覆鏈変粈涔鍖哄埆?
    绛旓細瀛楃鏁扮粍閲岄潰鏀剧殑鏄綘杈撳叆鐨勫唴瀹癸紱鑰瀛楃涓涓斁鐨勪篃鏄綘杈撳叆鐨勫唴瀹癸紝鍙槸缁撳熬澶氫簡涓涓榎0鈥
  • C璇█銆傚浣曟竻绌哄瓧绗(涓)鏁扮粍銆佸彟姹瀛楃鏁扮粍鍜屽瓧绗︿覆鏁扮粍鍖哄埆銆
    绛旓細鏄娓呯┖姣忎釜鍏冪礌锛涙竻绌哄瓧绗︿覆鏄皢瀛楃涓茬疆涓虹┖锛岃繖涓や釜瑕佹眰鏈夊紓銆傛竻绌烘暟缁勶細char a[100]; int i; for ( i=0;i<100;i++ ) a[i]=0;娓呯┖瀛楃涓诧細char a[100]; a[0]=0; //鎴朼[0]='\0';鍥犱负瀛楃涓蹭互0缁撴潫锛屽彧瑕佸皢瀛楃涓叉暟缁绗1涓瓧绗﹁缃负0鍊煎嵆绠楁竻绌轰簡瀛楃涓层
  • c璇█瀛楃鏁扮粍浣跨敤鏂规硶
    绛旓細c璇█瀛楃鏁扮粍浣跨敤鏂规硶 瀵艰锛氬瓧绗︽暟缁勬槸涓涓瓨鍌ㄥ瓧绗︾殑鏁扮粍锛岃瀛楃涓鏄竴涓敤鍙屾嫭鍙锋嫭璧锋潵鐨勪互'/0'缁撴潫鐨勫瓧绗﹀簭鍒楋紝涓嬮潰灏辩敱鎴戜负澶у浠嬬粛涓涓媍璇█瀛楃鏁扮粍浣跨敤鏂规硶锛屽笇鏈涘澶у鏈夋墍甯姪锛1銆佸瓧绗︽暟缁勭殑瀹氫箟涓庡垵濮嬪寲 瀛楃鏁扮粍鐨勫垵濮嬪寲锛屾渶瀹规槗鐞嗚В鐨勬柟寮忓氨鏄愪釜瀛楃璧嬬粰鏁扮粍涓悇鍏冪礌銆俢har str[10]...
  • c璇█string鍜宑har鐨勫尯鍒
    绛旓細2銆瀛楃涓绫诲瀷 瀛楃涓茬被鍨嬶紙string锛夋槸鐢卞涓瓧绗︾粍鎴愮殑瀛楃搴忓垪銆傚湪C璇█涓紝瀛楃涓插湪鍐呭瓨涓互null瀛楃浣滀负缁撳熬銆傚瓧绗︿覆绫诲瀷闇瑕佷娇鐢瀛楃鏁扮粍鏉ュ瓨鍌紝鏁扮粍涓殑姣忎釜鍏冪礌瀛樺偍涓涓瓧绗︺備緥濡傦紝char str[10]=鈥淗ello鈥濓紱瀹氫箟浜嗕竴涓瓧绗︽暟缁勶紝鐢ㄦ潵瀛樺偍瀛楃涓测淗ello鈥濓紝鏁扮粍闀垮害涓10锛屽寘鎷琻ull瀛楃銆侰璇█鐨...
  • C璇█涓, 瀛楃鏁扮粍鍙兘瀛樻斁瀛楃涓鍚?
    绛旓細涓嶆槸锛屼篃鍙互瀛樻斁鍏朵粬鐨勪俊鎭 浣嗘槸鍦C璇█涓洜涓烘病鏈塨yte绫诲瀷锛岃宑har绫诲瀷鍙崰涓涓瓧绗﹀ぇ灏忋傛墍浠ュ0鏄庝竴涓瀛楃鏁扮粍鍙互鐢ㄤ綔缂撳啿鍖恒 鍥犱负鍙互瀹氫綅鍒版瘡涓涓瓧鑺傦紝鎵浠ラ潪甯哥伒娲汇 濡傛灉瀹氫箟涓涓暣褰㈡暟缁勫綋鐒跺氨涓嶈兘瀹氫綅鍒版瘡涓涓瓧鑺備簡锛屽畠蹇呴』涓娆¤闂袱涓瓧鑺傦紙鍦ㄧ紪璇戝櫒鍜屾搷浣滅郴缁熻涓篿nt鍨嬪崰涓や釜瀛楄妭鏃)...
  • C璇█涓浠涔鏄瓧绗,浠涔堟槸瀛楃涓鍟,璋㈣阿
    绛旓細2銆瀛楃涓涓昏鐢ㄤ簬缂栫▼锛屾蹇佃鏄庛佸嚱鏁拌В閲娿佺敤娉曡杩拌姝f枃锛岃繖閲岃ˉ鍏呬竴鐐癸細瀛楃涓插湪瀛樺偍涓婄被浼瀛楃鏁扮粍锛屾墍浠ュ畠姣忎竴浣嶇殑鍗曚釜鍏冪礌閮芥槸鍙互鎻愬彇鐨勩傚畠鏄紪绋璇█涓〃绀烘枃鏈殑鏁版嵁绫诲瀷銆傚湪绋嬪簭璁捐涓紝瀛楃涓诧紙string锛変负绗﹀彿鎴栨暟鍊肩殑涓涓繛缁簭鍒楋紝濡傜鍙蜂覆锛堜竴涓插瓧绗锛夋垨浜岃繘鍒舵暟瀛椾覆锛堜竴涓蹭簩杩涘埗鏁板瓧锛...
  • C璇█涓,鍏充簬瀛楃涓闀垮害涓庡瓧绗︽暟缁闀垮害鐨勯棶棰樸
    绛旓細1妤兼瑙o紝浣犲湪鍒濆鍖栨椂缁鏁扮粍a璧嬩簡3涓硷紝鎵浠ュ叾瀹瀉鐨勭被鍨嬪簲璇ユ槸 char a[3]锛屾暟缁勯暱搴︿负3,銆傝瀛楃涓灏变笉涓鏍蜂簡锛屼粬蹇呴』浠モ榎0鈥欑粨灏撅紝浣犵殑 鈥榓鈥 鈥榖鈥 鈥c鈥欏瓨鍌ㄥ湪涓涓繛缁殑鍦板潃涓婏紝瀛楃涓茬殑闀垮害鏄粠鈥榓鈥欑殑鍦板潃寮濮嬩竴鐩磋鏁帮紝褰撹鍒扳榎0鈥欐椂缁撴潫锛岃櫧鐒朵綘娌℃湁鐢ㄥ埌鈥榗鈥欏悗闈㈢殑...
  • C璇█涓瀛楃涓蹭笌瀛楃鏈変粈涔鍖哄埆?
    绛旓細c璇█涓殑瀛楃涓蹭笌瀛楃閮芥槸涓ょ鏁版嵁绫诲瀷锛屽瓧绗︿覆鏄敱瀛楃缁勬垚鐨勶紝涓よ呯殑鍖哄埆鏄瓧绗﹀彧鑳芥湁涓涓瓧姣嶏紝鑰屽瓧绗︿覆鍙互鏈夊ソ澶氫釜瀛楁瘝鎷兼垚銆
  • 扩展阅读:c语言字符对照表 ... c语言字符个数怎么数 ... 字符串存入数组c语言 ... c语言字符数组怎么写 ... c语言 字符串怎么声明 ... c语言中字符和字符串 ... c语言字符串字符替换 ... c语言串口打印数组 ... c语言字符串和字符数组的区别 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网