关于#c语言#的问题:字符串统计

题目《字符串统计》
#include 
#include 
int main()
{
    int len, max=0, i, count = -1,k,j;
    char arr[80], ret[80];
    gets(arr);
    while (strcmp(arr,"stop") != 0) {
        for (i = 0;; i++) {
            count++;
            if (arr[i] == ' ') {
                if (count > max) {
                    max = count;
                }
                count = -1;
            }if (arr[i] == '\0') {//找出最长字符串
                for (j = 0, count=0;; j++) {
                    if (arr[j] != ' ') {
                        count++;
                    }else{
                        if (count == max) {
                            for (k = 0; k < max; k++) {
                                ret[k] = arr[j - max+1+k];         //应该从此处开始报错,arr[0]此时为输入的整个字符串,而非我所想的单个字符,之前是没问题的
                                break;
                            }
                        } 
                        count = 0;
                    }
                }
                printf("%d\n", max);
                for (k = 0; k < max; k++){
                    printf("%c", ret[k]);
                }
                max = 0;
                break;
            }
        }gets(arr);
    }
    return 0;
}

从我所标注的点开始arr[0]就是整个字符串了,我按题目输入,他就变成了“My name is Amy”,而不是我想要的n
0x00007FF6C9A05BED 处(位于 字符串.exe 中)引发的异常: 0xC0000005: 读取位置 0x000000B2777F0000 时发生访问冲突。
我实在不知道为什么呀,真没见过这场面啊,对了,直接在csdn上搜“字符串统计”就是我的这个题目

你这具体想干啥我没搞太懂,就说几点已经存在的问题吧


#include <stdio.h>
#include <string.h>
int main()
{
   int len, max = 0, i, count = -1, k, j;
   char arr[80], ret[80];
   gets(arr);
   while (strcmp(arr, "stop") != 0)
   {
      k = j = max = 0;
      for (i = 0;; i++)
      {
         count++;
         if (arr[i] == ' ' || arr[i + 1] == '\0')
         {
            if (arr[i] == ' ')
               count--;
            if (count > max)
            {
               max = count;
               k = j;
            }
            j = i + 1;
            count = 0;
         }
         if (arr[i] == '\0')
         { // 找出最长字符串
            // for (j = 0, count = 0; arr[j]; j++)
            // {
            //    if (arr[j] != ' ')
            //    {
            //       count++;
            //    }
            //    else
            //    {
            //       if (count == max)
            //       {
            //          for (k = 0; k < max; k++)
            //          {
            //             ret[k] = arr[j - max + 1 + k]; // 应该从此处开始报错,arr[0]此时为输入的整个字符串,而非我所想的单个字符,之前是没问题的
            //             break;
            //          }
            //       }
            //       count = 0;
            //    }
            // }
            printf("%d\n", max);
            for (j = k; j < k + max; j++)
            {
               printf("%c", arr[j]);
            }
            printf("\n");
            // max = 0;
            break;
         }
      }
      gets(arr);
   }
   return 0;
}