Reputation: 386
I keep getting that error. I am pretty sure it has something to do with memory allocation but i'm not quite sure how to fix it.
#include <stdio.h>
#include <stdlib.h>
#include <limits.h>
#include <string.h>
char * VOWELS ="aeiouAEIOU";
void printLatinWord(char *a);
int main(int argc, char **argv){
char phrase[100];
char *word = malloc(sizeof(char) *100);
printf("Enter the phrase to be translated: \n");
fgets(word, 100, stdin);
printf("The phrase in Pig Latin is:\n");
word = strtok(phrase, " ");
printLatinWord(word);
return 0;
}
void printLatinWord(char *word){
while (strchr(VOWELS, *word) == NULL){
char consonant = *word;
char *to=word, *from=word+1;
while (*from)
*to++=*from++;
*to=consonant;
}
printf("%say\n", word);
}
the out put gives "Segmentation fault (core dumped)"
Upvotes: 2
Views: 959
Reputation: 60711
fgets(word, 100, stdin);
word = strtok(phrase, " ");
You have the parameters the wrong way round here. You're splitting the string in phrase
which is uninitialized, and then you're assigning the result to word
thus overwriting the pointer to the memory you previously allocated.
You probably intended for the fgets
to read the input into phrase
rather than word
.
Upvotes: 5