为什么这个代码没有读入字符串的长度
#include<stdio.h>
#include <string.h>
int main(void)
{
/*********Begin*********/
char ch[]={"\0"};
int a=0,b,n,m;
for(a=0;ch!=0;a++){
gets(ch);
if(ch=="stop"){
break;
}
}
for(b=0;b<a;b++){
n=strlen(ch);
printf("%d name\n",n);
}
/*********End**********/
return 0;
} #include <stdio.h>
#include <string.h>
int main(void)
{
/*******Begin*******/
char ch = {""};
int a, b, n;
for (a = 0; a < 100; a++) {
gets(ch);
if (strcmp(ch, "stop") == 0) {
break;
}
}
for (b = 0; b < a; b++) {
n = strlen(ch);
printf("%d name\n", n);
}
/*******End********/
return 0;
}
在这个代码中,主要的问题是 char ch[]={"\0"}; 这一行的声明方式不正确,应该使用 char ch = {""}; 来声明一个二维字符数组。另外, gets 函数已经被标记为不安全,应该使用 fgets 函数来代替。此外, if(ch=="stop") 这一行使用了错误的字符串比较方式,应该使用 strcmp 函数来比较字符串。最后, n=strlen(ch); 这一行应该在循环内部进行,以确保只对有效输入进行字符串长度的计算。
页:
[1]