我的代码有问题。我需要扫描字符串,直到我给出char 0
并用1个字符,2个,3个等计算多少个单词。这是我的代码,但它永远不会停止。
#include <stdio.h>
#include <string.h>
int main()
{
char a[100];
int length[14],i,k;
for (i=1; i<=14; i++)
length[i]=0;
do
{
scanf("%s",a);
length[strlen(a)] =length[strlen(a)]+1;
} while (a!="0");
printf("Word Length\t|Number of Occurs\n");
for(i=1; i<=14; i++)
{
printf("%d\t\t|",i);
if (length[i]>=1)
for (k=1; k<=length[i]; k++)
printf("*");
printf("\n");
}
return 0;
}
答案 0 :(得分:4)
使用== /!=运算符无法检查两个字符串是否相等/不同。 在C中,string是字符数组,数组的名称代表其地址,因此在您的示例中,将 a 与&#34; 0&#34;进行比较只需比较数组 a 的地址和字符串的地址&#34; 0&#34; (这可能是在称为字符串池的固定区域中的地址,具体取决于您使用的编译器),这将永远不会相同,这就是您的程序进入无限循环的原因。 您应该使用 strcmp 函数形式 string.h