A string in the programming language C is represented as a sequence of characters followed by a null terminator (represented as \0).
Questions tagged [c-strings]
2715 questions
                    
                    337
                    
            votes
                
                19 answers
            
        Why do I get a segmentation fault when writing to a "char *s" initialized with a string literal, but not "char s[]"?
The following code receives seg fault on line 2:
char *str = "string";
str[0] = 'z';  // could be also written as *str = 'z'
printf("%s\n", str);
While this works perfectly well:
char str[] = "string";
str[0] = 'z';
printf("%s\n", str);
Tested…
         
    
    
        Markus
        
- 3,491
- 3
- 18
- 6
                    118
                    
            votes
                
                7 answers
            
        What is the lifetime of the result of std::string::c_str()?
In one of my programs, I have to interface with some legacy code that works with const char*.
Lets say I have a structure which looks like:
struct Foo
{
  const char* server;
  const char* name;
};
My higher-level application only deals with…
         
    
    
        ereOn
        
- 53,676
- 39
- 161
- 238
                    91
                    
            votes
                
                3 answers
            
        Is it possible to print out only a certain section of a C-string, without making a separate substring?
Say I have the following:
char* string = "Hello, how are you?";
Is it possible to print out only the last 5 bytes of this string? What about the first 5 bytes only? Is there some variation of printf that would allow for this?
         
    
    
        Tim
        
- 4,295
- 9
- 37
- 49
                    91
                    
            votes
                
                16 answers
            
        How do you convert CString and std::string std::wstring to each other?
CString is quite handy, while std::string is more compatible with STL container. I am using hash_map. However, hash_map does not support CStrings as keys, so I want to convert the CString into a std::string.
Writing a CString hash function seems to…
         
    
    
        user25749
        
- 4,825
- 14
- 61
- 83
                    66
                    
            votes
                
                11 answers
            
        What happens to memory after '\0' in a C string?
Surprisingly simple/stupid/basic question, but I have no idea: Suppose I want to return the user of my function a C-string, whose length I do not know at the beginning of the function.  I can place only an upper bound on the length at the outset,…
         
    
    
        Erika Electra
        
- 1,854
- 3
- 20
- 31
                    65
                    
            votes
                
                8 answers
            
        Is it bad to declare a C-style string without const? If so, why?
Doing this in C++
char* cool = "cool";
compiles fine, but gives me a warning: 
deprecated conversion from string constant to char*.
I would never willfully use a C-style string over std::string, but just in case I'm asked this question: 
is it…
         
    
    
        Coffee Maker
        
- 1,543
- 1
- 16
- 29
                    61
                    
            votes
                
                4 answers
            
        Using a C string gives a warning: "Address of stack memory associated with local variable returned"
I am not a C programmer, so I am not that familiar with C-string, but now I have to use a C library, so here is a shortened version of my code to demonstrate my problem:
char** ReadLineImpl::my_completion () {
    char* matches[1];
    matches[0] =…
         
    
    
        khajvah
        
- 4,889
- 9
- 41
- 63
                    59
                    
            votes
                
                6 answers
            
        What is the difference between memcmp, strcmp and strncmp in C?
I wrote this small piece of code in C to test memcmp() strncmp() strcmp() functions in C.
Here is the code that I wrote:
#include 
#include 
#include 
int main() {
        char *word1="apple",*word2="atoms";
        if…   
         
    
    
        und3rd06012
        
- 717
- 1
- 14
- 19
                    54
                    
            votes
                
                4 answers
            
        String termination - char c=0 vs char c='\0'
When terminating a string, it seems to me that logically char c=0 is equivalent to char c='\0', since the "null" (ASCII 0) byte is 0, but usually people tend to do '\0' instead. Is this purely out of preference or should it be a better…
         
    
    
        Joe DF
        
- 5,438
- 6
- 41
- 63
                    48
                    
            votes
                
                4 answers
            
        Can a std::string contain embedded nulls?
For regular C strings, a null character '\0' signifies the end of data.
What about std::string, can I have a string with embedded null characters?
         
    
    
        WilliamKF
        
- 41,123
- 68
- 193
- 295
                    42
                    
            votes
                
                2 answers
            
        Expand macros inside quoted string
Possible Duplicate:
C Macros to create strings 
I have a function which accepts one argument of type char*, like f("string"); 
If the string argument is defined by-the-fly in the function call, how can macros be expanded within the string…
         
    
    
        davide
        
- 2,082
- 3
- 21
- 30
                    39
                    
            votes
                
                2 answers
            
        C - split string into an array of strings
I'm not completely sure how to do this in C: 
char* curToken = strtok(string, ";");
//curToken = "ls -l" we will say
//I need a array of strings containing "ls", "-l", and NULL for execvp()
How would I go about doing this? 
         
    
    
        Jordan
        
- 2,070
- 6
- 24
- 41
                    36
                    
            votes
                
                5 answers
            
        Why do I first have to strcpy() before strcat()?
Why does this code produce runtime issues:
char stuff[100];
strcat(stuff,"hi ");
strcat(stuff,"there");
but this doesn't?
char stuff[100];
strcpy(stuff,"hi ");
strcat(stuff,"there");
         
    
    
        Or Cyngiser
        
- 1,027
- 1
- 12
- 16
                    34
                    
            votes
                
                3 answers
            
        How to declare constexpr C string?
I think i quite understand how to use the keyword constexpr for simple variable types, but i'm confused when it comes to pointers to values.
I would like to declare a constexpr C string literal, which will behave like
#define my_str "hello"
That…
         
    
    
        Youda008
        
- 1,788
- 1
- 17
- 35
                    33
                    
            votes
                
                7 answers
            
        Why is strdup considered to be evil
I've seen some posters stating that strdup is evil. Is there a consensus on this?  I've used it without any guilty feelings and can see no reason why it is worse than using malloc/memcpy. 
The only thing I can think might earn strdup a reputation is…
         
    
    
        William Morris
        
- 3,554
- 2
- 23
- 24