Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #include <stdbool.h>
- int * removeSpace(char* str) {
- char *out = str;
- char *put = str;
- for(; *str != '\0'; ++str)
- {
- if(*str != ' ')
- *put++ = *str;
- }
- *put = '\0';
- return out;
- }
- int string_length(char *string)
- {
- int length = 0;
- while(*string)
- {
- length++;
- string++;
- }
- return length;
- }
- void reverses(char* reverse){
- int length, c;
- char *begin, *end, temp;
- length = string_length(reverse);
- begin = reverse;
- end = reverse;
- for ( c = 0 ; c < ( length - 1 ) ; c++ )
- end++;
- for ( c = 0 ; c < length/2 ; c++ )
- {
- temp = *end;
- *end = *begin;
- *begin = temp;
- begin++;
- end--;
- }
- }
- void lower_string(char* str) {
- int c = 0;
- while (str[c] != '\0') {
- if (str[c] >= 'A' && str[c] <= 'Z') {
- str[c] = str[c] + 32;
- }
- c++;
- }
- }
- void copy_string(char *target, char *source)
- {
- while(*source)
- {
- *target = *source;
- source++;
- target++;
- }
- *target = '\0';
- }
- int compare_string(char *first, char *second)
- {
- while(*first==*second)
- {
- if ( *first == '\0' || *second == '\0' )
- break;
- first++;
- second++;
- }
- if( *first == '\0' && *second == '\0' )
- return 0;
- else
- return -1;
- }
- int checkForPalindrom(char* string){
- int check, length;
- char *reverse;
- lower_string(string);
- length = string_length(string);
- reverse = (char*)malloc(length+1);
- copy_string(reverse,string);
- reverses(reverse);
- removeSpace(string);
- check = compare_string(string, reverse);
- free(reverse);
- if(check == 0)
- return 1;
- else
- return 0;
- }
- int main(void)
- {
- char palindrom[100];
- bool quit = false;
- int result;
- char answer;
- while(!quit){
- printf("Skriv in en mening: ");
- //scanf(" %c")
- //scanf(" %[^\n]%*s", palindrom);
- gets(palindrom);
- result = checkForPalindrom(palindrom);
- if ( result == 1 )
- printf("\"%s\" is a palindrome string.\n", palindrom);
- else
- printf("\"%s\" is not a palindrome string.\n", palindrom);
- memset(palindrom, 0, 10);
- printf("\nWould you like to start over? (j/n): ");
- scanf("%s", &answer);
- if(answer == 'j')
- continue;
- else if(answer == 'n'){
- quit = true;
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement