+ 1

[SOLVED]Segmentation fault when using pointer in Function!

I'm trying to write a function in C to converts all small characters in a string to upper case characters and returns the number of changed characters; When I run it, I got a Segmentation fault. Can somebody helps me figure out what's wrong with my code ?? Thanks a lot. -------------------------------------------------------------------------------- #include <stdio.h> int str2upper(char *s){ int count=0; int x; for (x=0; s[x]!= '\0';x++){ if(s[x]>='a' && s[x]<='z'){ s[x]=s[x] -32; count++; } } return count; } int main() { printf("------------------------\n"); printf("%d", str2upper("aBCd") ); }

30th Nov 2020, 4:03 PM
Ticcher Leonar
Ticcher Leonar - avatar
2 Answers
+ 5
In main function: char s[] = "aBcD"; printf("%d\n", str2upper(s)); You are passing a C-string literal, which is a constant char* (read-only memory address). Pass a char array which is readable & writable to the function.
30th Nov 2020, 4:23 PM
Ipang
+ 1
Thank you. It works now! :D
30th Nov 2020, 4:35 PM
Ticcher Leonar
Ticcher Leonar - avatar