You don’t have enough space in fn. By strcat’ing on to it you overwrite the end of its stack allocation and into the stack .. hence the segmentation fault.
You could try the following instead:
char fn[255]; strcpy( fn, "~/lyrics/" ); strcat( fn, argv[1] ); strcat( fn, ".txt" );
You just have to be sure that the whole path and filename can fit into 255 characters.
Alternatively you could do this:
char* fn = NULL; int argvLen = strlen( argv[1] ); fn = malloc( 9 + argvLen + 4 + 1 ); // Add 1 for null terminator. strcpy( fn, "~/lyrics/" ); strcat( fn, argv[1] ); strcat( fn, ".txt" );
And you have definitely allocated enough space for the string. Just don’t forget to free it when you have finished with it!
Related Posts:
- What causes a segmentation fault (core dump) to occur in C?
- segmentation fault : 11
- How do I use valgrind to find memory leaks?
- segmentation fault : 11
- Invalid read of size 8 – Valgrind + C
- What is a bus error? Is it different from a segmentation fault?
- What is a bus error? Is it different from a segmentation fault?
- Valgrind: Invalid read of size 1
- valgrind – Address —- is 0 bytes after a block of size 8 alloc’d
- Uninitialized value was created by a heap allocation
- Execution of printf() and Segmentation Fault
- Error: “Access not within mapped region at address” (Valgrind)
- segmentation fault using scanf
- segmentation fault with strcpy [duplicate]
- Implementing Taylor Series for sine and cosine in C
- warning: implicit declaration of function
- pthread_join() and pthread_exit()
- Why should we typedef a struct so often in C?
- What is the difference between ++i and i++?
- Undefined reference to pthread_create in Linux
- Stack smashing detected
- Why am I getting “void value not ignored as it ought to be”?
- Pointer Arithmetic
- dereferencing pointer to incomplete type
- Openssl : error “self signed certificate in certificate chain”
- Get a substring of a char* [duplicate]
- How do I create an array of strings in C?
- How do function pointers in C work?
- Expression must be a modifiable L-value
- “Expected expression before ‘ { ‘ token”
- How to generate a random int in C?
- C pointers and arrays: [Warning] assignment makes pointer from integer without a cast
- How to print the array?
- How to solve the error: assignment to expression with array type
- What does “1e” mean?
- how to use uint64_t in C [duplicate]
- munmap_chunk(): invalid pointer
- How do I solve the following errors: “Undefined reference to WinMain”, “[Error] Id returned 1 exit status”?
- Warning comparison between pointer and integer
- What is the LD_PRELOAD trick?
- What is the argument for printf that formats a long?
- How do I properly compare strings in C?
- Connect: Socket operation on non-socket
- Using %s in C correctly – very basic level
- How to correctly use the extern keyword in C
- How do you make an array of structs in C?
- How do we check if a pointer is NULL pointer?
- how to use wait in C
- How do I calculate MB/s & MiB/s?
- How to create my own header file in c++?
- In C programming, what is `undefined reference`error, when compiling?
- double free or corruption (fasttop)
- Returning string from C function
- error: expected declaration or statement at end of input in c
- Why do I get clang: error: linker command failed with exit code 1?
- Char Comparison in C
- How to convert integer to char in C?
- Program received signal SIGPIPE, Broken pipe
- How to read from stdin with fgets()?
- Why am I getting “array initializer must be an initializer list or string literal”?
- what is the unsigned datatype?
- #31 expression must have integral type
- How do you pass a function as a parameter in C?
- Reading a string with scanf
- getopt_long() — proper way to use it?
- C read file line by line
- C read file line by line
- Copying a part of a string (substring) in C
- Incompatible implicit declaration of built-in function ‘malloc’
- Need more information about Aborted (core dumped)
- Does C have a “foreach” loop construct?
- What is the cause of flexible array member not at end of struct error?
- Reversing a string in C
- When a number is written as 0x00… what does the x mean
- How to remove the character at a given index from a string in C?
- How can I get argv[] as int?
- waitpid, wnohang, wuntraced. How do I use these
- Why I do get “Cannot find bound of current function” when I overwrite the ret address of a vulnerable program?
- Writing binary number system in C code
- Convert char array to string use C
- Valgrind complains with “Invalid write of size 8”
- How does one represent the empty char?
- Removing trailing newline character from fgets() input
- Valgrind: invalid read of size 4 -> sigsegv, works fine without valgrind and in visual studio
- “Multiple definition”, “first defined here” errors
- Is there a good Valgrind substitute for Windows?
- segmentation fault: 11 in C code
- how use EOF stdin in C
- How does the strtok function in C work? [duplicate]
- Allocating char array using malloc
- Implementation of strtok() function
- switch case: error: case label does not reduce to an integer constant
- warning: incompatible implicit declaration of built-in function ‘printf’ [enabled by default]
- warning: return makes pointer from integer without a cast but returns integer as desired
- Reaching EOF with fgets
- The difference between char * and char[] [duplicate]
- Usage of \b and \r in C
- Parsing command-line arguments in C
- Compiler warning – suggest parentheses around assignment used as truth value
- lvalue required as increment operand