字符拷贝的时候怎么会多了许多奇怪的字符
<<The C Programming Language>>中文版练习1-13
题目是这样的:编写一个程序,打印其输入的文件中的单词的长度的直方图。
/* 从字符串中取出各个单词,存放在一个二唯数组中,然后根据每个单词的长度来打印*,作为单词的长度直方图
*/
#include <stdio.h>
#include <string.h>
#define OUT 0 /* 在单词外 */
#define IN 1 /* 在单词内 */
int main()
{
int i,j,iWordState=OUT; /* 单词初始状态为OUT */
int jw=0,kw;
int len; /* 单词的长度 */
char sInput[60]; /* 用户输入的字符串数组 */
char chWord[10][12]; /* 取出的单词存放在此二维数组 */
printf ("Please enter a string.\n");
gets (sInput);
for (i=0; sInput[i]!='\0'; i++){
if ((sInput[i]>='a' && sInput[i]<='z') || (sInput[i]>='A' && sInput[i]<='Z')){
if (iWordState==OUT){
iWordState=IN;
kw=0;
chWord[jw++][kw]=sInput[i];
}
else {
++kw;
chWord[jw-1][kw]=sInput[i];
}
}
else
iWordState=OUT;
}
for (i=0; i<jw; i++){
printf ("\n");
printf ("%-10s",chWord[i]);
len = strlen(chWord[i]);
for (j=0; j<len; j++)
printf ("*");
}
printf ("\n");
system ("PAUSE");
return 0;
}
但是总有些问题,比如输入
i love you
结果却是
i *
love← *****
you ***
love后面怎么会多了一个箭头?怎么回事?