带字符串的c语言程序
我对这个代码有问题。我需要扫描字符串,直到我给出字符0,并计算有多少个单词有1个字符,2,3。。。等等,这是我的代码,但它从未停止过带字符串的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);
#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。