#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;
}
你这具体想干啥我没搞太懂,就说几点已经存在的问题吧
#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;
}