C语言 字符串 以单词为单位的反转。

I good, name.

I doog eman

#include
#include
#include

void swap(char* a, char* b) {
	char c = *a; 
	*a = *b; 
	*b = c;
}
void reversal(char* s) {
	int i=0, j = strlen(s) - 1;
	while (i < j) {
		swap(s + i, s + j);
		i += 1;
		j -= 1;
	}

}
int main() {
	char s[301];
	char o[301]="";
	while (scanf("%[^\n]",s) != EOF) {
		getchar();
		int linNum = 0;
		char* p = s;
		char* q = p;

		while (*p) {
			if (!isalpha(*p)) {				
				*p = '\0';
				if (strlen(q)) {
					linNum += 1;
					reversal(q);//反转q字符串
					strcat(o, q);
					strcat(o, " ");
				} 									
				q = p + 1;//q指在下一个单词位置				
			}
			p++;
		}
		if (*q) {
			linNum += 1;
			reversal(q);//反转q字符串
		}
		
		printf("%d\n",linNum);
		strcat(o, q);
		puts(o);
	}
}

你可能感兴趣的:(C/C++,c语言,算法,开发语言)