c中带有字符串的程序

时间:2015-01-10 14:17:33

标签: c string

我的代码有问题。我需要扫描字符串,直到我给出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;
}

1 个答案:

答案 0 :(得分:4)

使用== /!=运算符无法检查两个字符串是否相等/不同。 在C中,string是字符数组,数组的名称代表其地址,因此在您的示例中,将 a 与&#34; 0&#34;进行比较只需比较数组 a 的地址和字符串的地址&#34; 0&#34; (这可能是在称为字符串池的固定区域中的地址,具体取决于您使用的编译器),这将永远不会相同,这就是您的程序进入无限循环的原因。 您应该使用 strcmp 函数形式 string.h