1215787625 发表于 2023-11-22 10:48:48

为什么这个代码没有读入字符串的长度


#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;
}

isdkz 发表于 2023-11-22 10:48:58

#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]
查看完整版本: 为什么这个代码没有读入字符串的长度