Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<stdio.h>
- #include <stdarg.h>
- void reverse(char *, char *);
- void reverseWords1(unsigned, char*, ...);
- void reverseWords2(char *, ...);
- void reverseWords3(char*, ...);
- int main()
- {
- printf("\nExample of the first working function\n");
- char s[][30] = { "i like this program very much", "im the boss", "get that paper", "raise the pot" };
- reverseWords1(4, s[0], s[1], s[2], s[3]);
- printf("\nExample of the second working function\n");
- char p[][50] = { "i like this program very much", "im the boss", "get that paper", "raise the pot", "one more sentence", "0 this one wont work cuz it has zero in it" };
- reverseWords2(p[0], p[1], p[2], p[3], p[4], p[5]);
- char k[] = { "1234" };
- printf("\nExample of the third working function\n");
- reverseWords3(k, p[0], p[1], p[2], p[3]);
- getchar();
- return 0;
- }
- void reverse(char *begin, char *end)
- {
- char temp;
- while (begin < end)
- {
- temp = *begin;
- *begin = *end;
- *end = temp;
- begin++;
- end--;
- }
- }
- void reverseWords1(unsigned k, char *s, ...)
- {
- for (unsigned i = 0; i < k; ++i)
- {
- char *word_begin = s;
- char *temp = s;
- while (*temp)
- {
- temp++;
- if (*temp == '\0')// reverse the last word, cycle ends, temp is null
- {
- reverse(word_begin, temp - 1);
- }
- else if (*temp == ' ')// reverse the word before space and put word_begin on char after space
- {
- reverse(word_begin, temp - 1);
- word_begin = temp + 1;
- }
- }
- reverse(s, temp - 1);// temp-1 - the last char
- printf("\n%s\n", s);
- while (*temp == '\0')
- temp++;
- s = temp;
- }
- }
- void reverseWords2(char *s, ...)
- {
- while (*s != '0')
- {
- char *word_begin = s;
- char *temp = s;
- while (*temp)
- {
- temp++;
- if (*temp == '\0')// reverse the last word, cycle ends, temp is null
- {
- reverse(word_begin, temp - 1);
- }
- else if (*temp == ' ')// reverse the word before space and put word_begin on char after space
- {
- reverse(word_begin, temp - 1);
- word_begin = temp + 1;
- }
- }
- reverse(s, temp - 1);// temp-1 - the last char
- printf("\n%s\n", s);
- while (*temp == '\0')
- temp++;
- s = temp;
- }
- }
- void reverseWords3(char *s, ...)
- {
- va_list parg;
- va_start(parg, s);
- char *pt = s;
- while (*pt != '\0')
- {
- char *word_begin = va_arg(parg, char*);
- char *temp = word_begin;
- char * d = word_begin;
- while (*temp)
- {
- temp++;
- if (*temp == '\0')// reverse the last word, cycle ends, temp is null
- {
- reverse(word_begin, temp - 1);
- }
- else if (*temp == ' ')// reverse the word before space and put word_begin on char after space
- {
- reverse(word_begin, temp - 1);
- word_begin = temp + 1;
- }
- }
- reverse(d, temp - 1);// temp-1 - the last char
- printf("\n%s\n", d);
- pt++;
- }
- va_end(parg);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement