AOJ_0017 Caesar Cipher

問題
getlineの使い方がわからないのでコードが変になった

↓恐ろしく非効率なコード

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;

char text[3][5] = {
	"this",
	"the",
	"that",
};
char S[100];
char A[100];
int len;

void solve(){
	char t[100];
	char word[100];
	for(int i = 0; i <= 26; i++){
		//printf("%d\n", i);
		for(int j = 0; j <= len; j++){
			if('a' <= S[j] && S[j] <= 'z')
				A[j] = (S[j] + i - 'a') % 26 + 'a';
			else
				A[j] = S[j];
		}
		//printf("%s\n", A);
		int p = 0;
		while(1){
			int j;
			for(j = p; A[j] != 0 && A[j] != ' '; j++){
				word[j-p] = A[j];
			}
			word[j-p] = 0;
			for(int k = 0; k < 3; k++){
				if(strcmp(&text[k][0], word) == 0)
					return;
			}
			if(A[j] == 0) break;
			p = j + 1;
		}
	}
}
int main(){
	char c;
	while(1){
		int f;
		for(len = 0;; len++){
			if(scanf("%c", &c) == EOF) return 0;
			if(c == '\n') break;
			S[len] = c;
		}
		if(len == 0) return 0;
		S[len] = 0;
		solve();
		printf("%s\n", A);
	}
	return 0;
}