雨中漫步~ 发表于 2021-9-16 17:14:21

S1E19按要求打印字符串

#include <stdio.h>
#include <string.h>

#define LENGTH 21

int main()
{
        char s;
        int i = 0, j, space = 0;
//        unsigned int k;
        printf("请输入一行文本:");
        while ((s = getchar()) != '\n')
        {
                ;
        }
    getchar();           
        for (i = 0;i < strlen(s);i++)
        {
                if (s == ' ') //判断是否有空格,\n是换行符
                {
                        space = 1;
                        j = i;
                }
        }

        printf("输入字符串长度是:%d\n",strlen(s));

        return 0;
       
}

求教为什么strlen()求出的字符串长度是9,输入的是6

jhq999 发表于 2021-9-16 18:18:00

#include <stdio.h>
#include <string.h>

#define LENGTH 21

int main()
{
      char s;
      int i = 0, j, space = 0;
//      unsigned int k;
      printf("请输入一行文本:");
      while ((s = getchar()) != '\n')
      {
                ;
      }
    //getchar();
    s='\0'; //////////////////////////////
      for (i = 0;i < strlen(s);i++)
      {
                if (s == ' ') //判断是否有空格,\n是换行符
                {
                        space = 1;
                        j = i;
                }
      }

      printf("输入字符串长度是:%d\n",strlen(s));

      return 0;
      
}

Cardist 发表于 2021-9-16 19:06:53

strlen() 遇到空字符 '\0' 才会停止计数

我的电脑上运行的结果也是错误的,按照 2 楼加了一行代码:
        getchar();

运行结果正确了

#include <string.h>
#include <Windows.h>

#define LENGTH 21

int main()
{
    char s;
    int i = 0, j, space = 0;
//      unsigned int k;
    printf("请输入一行文本:");
    while ((s = getchar()) != '\n')
    {
      ;
    }
        getchar();
        s = '\0';

    for (i = 0; i < strlen(s); i++)
    {
      if (s == ' ') // 判断是否有空格,\n是换行符
      {
            space = 1;
            j = i;
      }
    }

    printf("输入字符串长度是:%d\n", strlen(s));

    system("pause");
    return 0;      
}

雨中漫步~ 发表于 2021-9-16 19:43:09

Cardist 发表于 2021-9-16 19:06
strlen() 遇到空字符 '\0' 才会停止计数

我的电脑上运行的结果也是错误的,按照 2 楼加了一行代码:


我试了一下,不加getchar(),也可以正常运行的

Cardist 发表于 2021-9-17 13:59:28

雨中漫步~ 发表于 2021-9-16 19:43
我试了一下,不加getchar(),也可以正常运行的

抱歉,我手抖复制错了,加的那行代码应该是 getchar(); 下面那行,在输入的字符存入到数组后,在最后加一个空字符:
s = '\0';
页: [1]
查看完整版本: S1E19按要求打印字符串