|
自分が C のプログラムを書いているのか、C++ のプログラムを書いているのか
分かっていない人が多いような気がします。
#include <stdio.h>
#include <string.h>
int word_reverse(const char *s, char *t)
{
int n; const char *p, *q;
for (n = 0; ; n++) {
for (; *s == ' '; s++)
*t++ = ' ';
if (*s == '\0') { *t = '\0'; return n; }
for (p = s; *s && *s != ' '; s++)
;
for (q = s; q > p; )
*t++ = *--q;
}
}
int main(void)
{
char s[] = "I want to fly because if I can fly that feel so freedom";
char t[100];
int n = word_reverse(s, t);
printf("%d\n%s\n", n, t);
return 0;
}
word_reverse で、t に 100文字以上書き込まないようにするなら、
int word_reverse(const char *s, char *t)
{
int i, n; const char *p, *q;
for (i = n = 0; ; n++) {
for (; *s == ' '; s++) {
if (++i >= 100) { *t = '\0'; return -1; }
*t++ = ' ';
}
if (*s == '\0') { *t = '\0'; return n; }
for (p = s; *s && *s != ' '; s++)
;
for (q = s; q > p; ) {
if (++i >= 100) { *t = '\0'; return -1; }
*t++ = *--q;
}
}
}
|