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 strcpy
Here
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);
}