You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
66 lines
1.3 KiB
66 lines
1.3 KiB
/*
|
|
* pr_10.c
|
|
*
|
|
* Created on: Jun 11, 2013
|
|
* Author: delmadord
|
|
*/
|
|
|
|
// NOT WORKING - STRANGE BUG
|
|
|
|
#include <stdio.h>
|
|
#include <ctype.h>
|
|
#include <string.h>
|
|
|
|
#define NAME_LENGHT 40
|
|
|
|
void reverse_name(char *name);
|
|
int read_line(char str[], int n);
|
|
|
|
int main(void) {
|
|
char name[NAME_LENGHT + 1];
|
|
|
|
printf("Enter a first and last name: ");
|
|
read_line(name, NAME_LENGHT);
|
|
reverse_name(name);
|
|
printf("Reversed name: %s", name);
|
|
|
|
return 0;
|
|
}
|
|
|
|
void reverse_name(char *name) {
|
|
char first;
|
|
// Find where name starts and point there
|
|
do
|
|
first = *name++;
|
|
while (*name == ' ');
|
|
// Find where name ends, surname starts
|
|
while (isalpha(*name))
|
|
name++;
|
|
while (*name == ' ')
|
|
name++;
|
|
// Copy from start of the last name to the end into temp var
|
|
char temp[NAME_LENGHT + 1] = "";
|
|
strcpy(temp, name);
|
|
// Find where surname ends and cuts everything after
|
|
// while (isalpha(*temp))
|
|
// temp++;
|
|
// *temp = '\0';
|
|
// Add the rest
|
|
strcat(temp, " , ");
|
|
strncat(temp, &first, 1);
|
|
strcat(temp, ".");
|
|
// Put it to to the original var
|
|
// BUG HERE - temp is good, copy to name is good but when
|
|
// returned to main function, name cotains first name too
|
|
strcpy(name, temp);
|
|
}
|
|
|
|
int read_line(char str[], int n) {
|
|
int ch, i = 0;
|
|
|
|
while ((ch = getchar()) != '\n')
|
|
if (i < n)
|
|
str[i++] = ch;
|
|
str[i] = '\0';
|
|
return i;
|
|
}
|
|
|