例如:先定义一个字符数组
char a[13];
scanf("%s",a);
在键盘上输入 what is it?
系统把空格符号作为输入的符号串之间的分隔符。
于是a数组的值是what
而不是what is it?
有没有办法把整句what is it?赋值给a数组?
æ¹æ³å¦ä¸ï¼
1ãå®ä¹çæ¶åç´æ¥ç¨å符串èµå¼
char a[10]="hello";
注æï¼ä¸è½å å®ä¹åç»å®èµå¼ï¼å¦char a[10]; a[10]="hello";è¿æ ·æ¯é误çï¼
2ã对æ°ç»ä¸å符é个èµå¼
char a[10]={'h','e','l','l','o'};
3ãå©ç¨strcpy
char a[10]; strcpy(a, "hello");
æéæ åµï¼
1ãchar a[10]; a[10]="hello";//ä¸ä¸ªå符æä¹è½å®¹çº³ä¸ä¸ªå符串ï¼
åµä¸a[10]ä¹æ¯ä¸åå¨çã
2ãchar a[10]; a="hello";//è¿ç§æ åµå®¹æåºç°ï¼aè½ç¶æ¯æéï¼ä½æ¯å®å·²ç»æåå¨å æ ä¸åé ç10个å符空é´ï¼ç°å¨è¿ä¸ªæ åµaåæåæ°æ®åºä¸çhello常éï¼è¿éçæéaåºç°æ··ä¹±ï¼ä¸å 许ã
Cè¯è¨çè¿ç®ç¬¦æ ¹æ¬æ æ³æä½å符串ã
å¨Cè¯è¨ä¸æå符串å½ä½æ°ç»æ¥å¤çï¼å æ¤ï¼å¯¹å符串çéå¶æ¹å¼å对æ°ç»çä¸æ ·ï¼ç¹å«æ¯ï¼å®ä»¬é½ä¸è½ç¨Cè¯è¨çè¿ç®ç¬¦è¿è¡å¤å¶åæ¯è¾æä½ã
ç´æ¥å°è¯å¯¹å符串è¿è¡å¤å¶ææ¯è¾æä½ä¼å¤±è´¥ã
ä¾å¦ï¼åå®str1åstr2æå¦ä¸å£°æï¼
char str1[10], str2[10];
å©ç¨=è¿ç®ç¬¦æ¥æå符串å¤å¶å°å符æ°ç»ä¸æ¯ä¸å¯è½çï¼
str1 = "abc"; /*** WRONG ***/
str2 = str1; /*** WRONG ***/
Cè¯è¨æè¿äºè¯å¥è§£é为ä¸ä¸ªæéä¸å¦ä¸ä¸ªæéä¹é´çï¼éæ³çï¼èµå¼è¿ç®ãä½æ¯ï¼ä½¿ç¨=åå§åå符æ°ç»æ¯åæ³çï¼
char str1[10] = "abc";
è¿æ¯å 为å¨å£°æä¸ï¼=ä¸æ¯èµå¼è¿ç®ç¬¦ã
è¯å¾ä½¿ç¨å ³ç³»è¿ç®ç¬¦æå¤çè¿ç®ç¬¦æ¥æ¯è¾å符串æ¯åæ³çï¼ä½ä¸ä¼äº§çé¢æçç»æï¼
if (str1==str2) ... /*** WRONG ***/
è¿æ¡è¯å¥æstr1åstr2ä½ä¸ºæéæ¥è¿è¡æ¯è¾ï¼èä¸æ¯æ¯è¾ä¸¤ä¸ªæ°ç»çå 容ãå 为str1åstr2æä¸åçå°åï¼æ以表达å¼str1 == str2çå¼ä¸å®ä¸º0ã
1ãå®ä¹çæ¶åç´æ¥ç¨å符串èµå¼
char a[10]="hello";
注æï¼ä¸è½å å®ä¹åç»å®èµå¼ï¼å¦char a[10]; a[10]="hello";è¿æ ·æ¯é误çï¼
2ã对æ°ç»ä¸å符é个èµå¼
char a[10]={'h','e','l','l','o'};
3ãå©ç¨strcpy
char a[10]; strcpy(a, "hello");
æéæ åµï¼
1ãchar a[10]; a[10]="hello";//ä¸ä¸ªå符æä¹è½å®¹çº³ä¸ä¸ªå符串ï¼
åµä¸a[10]ä¹æ¯ä¸åå¨çã
2ãchar a[10]; a="hello";//è¿ç§æ åµå®¹æåºç°ï¼aè½ç¶æ¯æéï¼ä½æ¯å®å·²ç»æåå¨å æ ä¸åé ç10个å符空é´ï¼ç°å¨è¿ä¸ªæ åµaåæåæ°æ®åºä¸çhello常éï¼è¿éçæéaåºç°æ··ä¹±ï¼ä¸å 许ã
Cè¯è¨çè¿ç®ç¬¦æ ¹æ¬æ æ³æä½å符串ã
å¨Cè¯è¨ä¸æå符串å½ä½æ°ç»æ¥å¤çï¼å æ¤ï¼å¯¹å符串çéå¶æ¹å¼å对æ°ç»çä¸æ ·ï¼ç¹å«æ¯ï¼å®ä»¬é½ä¸è½ç¨Cè¯è¨çè¿ç®ç¬¦è¿è¡å¤å¶åæ¯è¾æä½ã
ç´æ¥å°è¯å¯¹å符串è¿è¡å¤å¶ææ¯è¾æä½ä¼å¤±è´¥ã
ä¾å¦ï¼åå®str1åstr2æå¦ä¸å£°æï¼
char str1[10], str2[10];
å©ç¨=è¿ç®ç¬¦æ¥æå符串å¤å¶å°å符æ°ç»ä¸æ¯ä¸å¯è½çï¼
str1 = "abc"; /*** WRONG ***/
str2 = str1; /*** WRONG ***/
Cè¯è¨æè¿äºè¯å¥è§£é为ä¸ä¸ªæéä¸å¦ä¸ä¸ªæéä¹é´çï¼éæ³çï¼èµå¼è¿ç®ãä½æ¯ï¼ä½¿ç¨=åå§åå符æ°ç»æ¯åæ³çï¼
char str1[10] = "abc";
è¿æ¯å 为å¨å£°æä¸ï¼=ä¸æ¯èµå¼è¿ç®ç¬¦ã
è¯å¾ä½¿ç¨å ³ç³»è¿ç®ç¬¦æå¤çè¿ç®ç¬¦æ¥æ¯è¾å符串æ¯åæ³çï¼ä½ä¸ä¼äº§çé¢æçç»æï¼
if (str1==str2) ... /*** WRONG ***/
è¿æ¡è¯å¥æstr1åstr2ä½ä¸ºæéæ¥è¿è¡æ¯è¾ï¼èä¸æ¯æ¯è¾ä¸¤ä¸ªæ°ç»çå 容ãå 为str1åstr2æä¸åçå°åï¼æ以表达å¼str1 == str2çå¼ä¸å®ä¸º0ã
温馨提示:答案为网友推荐,仅供参考
第1个回答 2009-08-24
可以用gets函数:
#include <stdio.h>
char a[13];
gets(a);
也可以用scanf的扫描集:
scanf("%12[^\n]%*[^\n]%*c",a);本回答被提问者采纳
#include <stdio.h>
char a[13];
gets(a);
也可以用scanf的扫描集:
scanf("%12[^\n]%*[^\n]%*c",a);本回答被提问者采纳
第2个回答 2009-08-24
char a[13];
gets(a);//
puts(a);
#include <stdio.h>
char *gets( char *str );
gets()函数从STDIN(标准输入)读取字符并把它们加载到str(字符串)里,直到遇到新行(\n)或到达EOF. 新行字符翻译为一个null中断符. gets()的返回值是读入的字符串,如果错误返回NULL.
int puts( char *str );
函数puts()把str(字符串)写到STDOUT(标准输出)上. puts() 成功时返回非负值, 失败时返回EOF.
gets(a);//
puts(a);
#include <stdio.h>
char *gets( char *str );
gets()函数从STDIN(标准输入)读取字符并把它们加载到str(字符串)里,直到遇到新行(\n)或到达EOF. 新行字符翻译为一个null中断符. gets()的返回值是读入的字符串,如果错误返回NULL.
int puts( char *str );
函数puts()把str(字符串)写到STDOUT(标准输出)上. puts() 成功时返回非负值, 失败时返回EOF.
第3个回答 2009-08-24
将scanf("%s",a);改为gets(a);即可。