Wrong Answer
/in/foo.c: In function 'main': /in/foo.c:21:5: warning: 'gets' is deprecated [-Wdeprecated-declarations] gets(s); ^~~~ In file included from /in/foo.c:1:0: /usr/include/stdio.h:640:14: note: declared here extern char *gets (char *__s) __wur __attribute_deprecated__; ^~~~ /in/foo.c:31:13: warning: this 'if' clause does not guard... [-Wmisleading-indentation] if (i > max) ^~ /in/foo.c:33:17: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'if' maxp = cmp; ^~~~ /in/foo.c:47:5: warning: 'maxp' may be used uninitialized in this function [-Wmaybe-uninitialized] printstr(maxp); ^~~~~~~~~~~~~~ /tmp/ccZZ1ffv.o: In function `main': foo.c:(.text.startup+0xd): warning: the `gets' function is dangerous and should not be used.
代码
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#define N 100
void
printstr(char *p)
{
while (!((*p == ' ') || (*p == '\0')))
{
putchar(*p);
p++;
}
}
int
main()
{
char s[N+1], *p, *maxp, *cmp;
int max = 0;
gets(s);
p = s;
cmp = s;
for (int i=0;; p++)
{
if (isalpha(*p))
i++;
if (isspace(*p))
{
if (i > max)
max = i;
maxp = cmp;
cmp = p + 1;
i = 0;
}
if (*p == '\0')
{
if (i > max)
{
max = i;
maxp = cmp;
}
break;
}
}
printstr(maxp);
return 0;
}