Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带字符串的c语言程序_C_String - Fatal编程技术网

带字符串的c语言程序

带字符串的c语言程序,c,string,C,String,我对这个代码有问题。我需要扫描字符串,直到我给出字符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);

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

您不能使用==/!=检查两个字符串是否相等/不同接线员。 在C语言中,字符串是字符数组,数组名称表示其地址,因此在您的示例中,将a与0进行比较只是比较数组a的地址和字符串0的地址,字符串0的地址可能是名为字符串池的固定区域中的地址,这取决于您使用的编译器,而编译器永远不会相同,这就是程序进入无限循环的原因。
您应该使用strcmp函数form string.h

这只是问题之一。还有其他几个问题。OP的代码调用UB。