lsmCC 发表于 2023-12-28 21:49:48

实现下面的需求

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
// 实现要求,怎么去掉空格并统计字符串的长度呢,并找出长度最大的字符串
int main()
{
    char a="";
    char *p={NULL};
    char b="";
    memset(a,0,sizeof(a));
    gets(a);
    // 以空格作为分隔符,进行分割
    int i=0;
    do
    {
      if(i==0)
      {
            p=strtok(a," ");
      }
      else
      {
            p=strtok(NULL," ");
      }
    } while (p!=NULL);
    int sum=0;
    int cnt=0;
    for(int j=0;j<sizeof(p)/sizeof(p);j++)
    {
      sum+=strlen(*(p+j));
      if(strlen(*(p+j)>cnt))
      {
            // 将其存到新的字符数组

      }
    }
    printf("%d %s",sum);//最后输出
   
   

}

FishC 发表于 2023-12-28 21:50:05

首先,你的代码有一些错误和不完善的地方。下面是修正后的代码:

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

int main()
{
    char a;// 字符数组大小需要设定一个足够大的值
    memset(a, 0, sizeof(a));
    gets(a);

    int length = strlen(a);// 统计字符串长度

    // 去掉空格并找出长度最大的字符串
    char maxStr;
    int maxLen = 0;
    char *p = strtok(a, " ");
    while (p != NULL)
    {
      int len = strlen(p);
      if (len > maxLen)
      {
            maxLen = len;
            strcpy(maxStr, p);// 将最长的单词存储到maxStr中
      }
      p = strtok(NULL, " ");
    }

    printf("去掉空格后的字符串: %s\n", a);// 输出去掉空格后的字符串
    printf("字符串长度: %d\n", length);// 输出字符串长度
    printf("长度最大的字符串: %s\n", maxStr);// 输出最长的单词

    return 0;
}

这个程序可以实现你的需求:去掉输入字符串中的空格,并且统计字符串的长度,找出长度最大的字符串,并输出结果。

注意,在使用 `gets()` 函数获取输入时,需要确保输入的字符数量不超过定义的数组大小,以防止缓冲区溢出。此外, `strtok()` 函数用于分割字符串,第一次调用时传入要分割的字符串,后续调用传入 `NULL` 来继续分割字符串。在每次分割时,使用 `strlen()` 函数获取单词的长度,并与当前最长的单词长度比较。如果长度更长,则更新最长单词的长度和内容。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
页: [1]
查看完整版本: 实现下面的需求