鱼C论坛

 找回密码
 立即注册
查看: 667|回复: 1

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

[复制链接]
发表于 2023-11-22 10:48:48 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x

#include<stdio.h>
#include <string.h>
int main(void)
{
    /*********Begin*********/
    char ch[][100]={"\0"};
    int a=0,b,n,m;
    for(a=0;ch[a]!=0;a++){
        gets(ch[a]);
        if(ch[a]=="stop"){
            break;
        }
    }
    for(b=0;b<a;b++){
        n=strlen(ch[b]);
        printf("%d name\n",n);
    }
    /*********End**********/
    return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-11-22 10:48:58 | 显示全部楼层
  1. #include <stdio.h>
  2. #include <string.h>

  3. int main(void)
  4. {
  5.     /*******[color=Red]Begin[/color]*******/
  6.     char ch[100][100] = {""};
  7.     int a, b, n;

  8.     for (a = 0; a < 100; a++) {
  9.         gets(ch[a]);
  10.         if (strcmp(ch[a], "stop") == 0) {
  11.             break;
  12.         }
  13.     }

  14.     for (b = 0; b < a; b++) {
  15.         n = strlen(ch[b]);
  16.         printf("%d name\n", n);
  17.     }
  18.     /*******[color=Red]End[/color]********/
  19.     return 0;
  20. }
复制代码


在这个代码中,主要的问题是 char ch[][100]={"\0"}; 这一行的声明方式不正确,应该使用 char ch[100][100] = {""}; 来声明一个二维字符数组。另外, gets 函数已经被标记为不安全,应该使用 fgets 函数来代替。此外, if(ch[a]=="stop") 这一行使用了错误的字符串比较方式,应该使用 strcmp 函数来比较字符串。最后, n=strlen(ch); 这一行应该在循环内部进行,以确保只对有效输入进行字符串长度的计算。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-22 11:16

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表