char str[3]; // need space for chars in str, plus for terminating '\0' char str[0] = 'h'; str[1] = 'i'; str[2] = '\0'; printf("%s\n", str); // prints hi to stdout
Here is a description of some of the functions in the Stardard C string libarary (string.h) for manipulating strings:
#include <string.h> int strlen(char *s); // returns the length of the string // not including the null character char *strcpy(char *dst, char *src); // copies string src to string dst up // unitl first '\0' character in src // returns a ptr to the destination string // it adds '\0' to end of the copy char *strncpy(char *dst, char *src, int size); // copies up to first '\0' or size characters // from src to dst int strcmp(char *s1, char *s2); // returns 0 if s1 and s2 are the same strings // a value < 0 if s1 is less than s2 // a value > 0 if s1 is greater than s2 char *strcat(char *dst, char *src) // append chars from src to end of dst // returns ptr to dst, it adds '\0' to end char *strncat(char *dst, char *src, int size); char *strstr(char *string, char *substr); // locates a substering inside a string // returns a pointer to the begining of substr in string // returns NULL if substr not in string char *strchr(const char *s, int c); // locate a character in a string char *strtok(char *s, const char *delim); // extract tokens from strings
In addition there are some functions in stdlib.h for converting between strings and other C types:
#include <stdlib.h> int atoi(const char *nptr); // convert a string to an integer // "1234" to int value 1234 double atof(const char *nptr);To get on-line documentation of C functions, use Unix's man utility:
% man strcpyHere is more information about using man.
Here are some examples of using these functions:
int main() { int size; char *static_str = "hello there"; char *new_str = NULL; char *ptr = NULL; printf("%s\n", static_str); // prints "hello there" size = strlen(static_str); new_str = malloc(sizeof(char)*(size+1)); // need space for '\0' if(new_str == NULL) { Error("malloc failed\n"); } strncpy(new_str, static_str, 6); strcat(new_str, "yo"); printf("%s\n", new_str); // prints "hello yo" if((ptr = strstr(new_str, "yo")) != NULL) { printf("%s\n", ptr); // prints "yo" } free(new_str); }