一时学习一时爽 发表于 2021-10-1 13:26:20

C语言S1E19的第一题

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

#define max 1024
int main()
{
    char ch1,ch2;
    int i=0,j=20;

    printf("请输入一段文本:");
    while((ch1=getchar())!='\n')
    {

      if(i>20)
      {
            break;
      }

      if(ch1==' ')
      {
            j=i;
      }
    }
    if(i>20)
    {
      strncpy(ch2,ch1,j);
      ch2='\0';
    }
    else
    {
      strcpy(ch2,ch1);
    }

    printf("你输入的文本是:%s",ch2);
    return 0;
}

要求 B:如果用户输入的文本长度超过 20 个字符,且文本中存在空格,则截取至最接近末尾(第 20 个字符串)的空格
为什么这段代码无法截取出最接近末尾的空格啊,每次都是直接输出到第20个字符串,求解答

jhq999 发表于 2021-10-1 13:26:21

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

#define max 1024
int main()
{
    char ch1,ch2;
    int i=0,j=20;

    printf("请输入一段文本:");
    while((ch1=getchar())!='\n')//如果这里i++;下面的ch1==' '里的i就是i+1不是i
    {

      if(i>20)
      {
            break;
      }

      if(ch1==' ')
      {
            j=i;
      }
    }

    if(i>20)
    {
      strncpy(ch2,ch1,j);
      ch2='\0';
    }
    else
    {
       ch1='\0';//不到20个字符你得给个结尾标志
      strcpy(ch2,ch1);
    }

    printf("你输入的文本是:%s",ch2);
    return 0;
}
页: [1]
查看完整版本: C语言S1E19的第一题