Standard String Functions
From Nutwiki
Revision as of 14:10, 28 April 2011 by Tim (Talk) (New page: == Source Code == <source lang="c"> #include <dev/board.h> #include <io.h> #include <stdio.h> #include <string.h> #include <stdlib.h> int main(void) { unsigned long baud = 115200; ...)
Source Code
<source lang="c">
- include <dev/board.h>
- include <io.h>
- include <stdio.h>
- include <string.h>
- include <stdlib.h>
int main(void) {
unsigned long baud = 115200; char buffer[50]; char buffer2[50]; int l; char *s;
NutRegisterDevice(&DEV_DEBUG, 0, 0);
freopen(DEV_DEBUG_NAME, "w", stdout); _ioctl(_fileno(stdout), UART_SETSPEED, &baud);
/* Copy "Hello" to the string. */
strcpy(buffer, "Hello");
/* Append " World" to buffer. */
strcat(buffer, " World");
printf("Text: %s\n", buffer);
/* Calculate the length of the string. */
l = strlen(buffer);
printf("Text is %d Characters long\n", l);
/* Compare two strings. */
if (strcmp(buffer, "Hello World") == 0) {
printf("Both strings are equal\n");
}
/* Look for the character 'l'. */
s = strchr(buffer, 'l');
if (s != NULL) {
printf("'l' is at character %ld\n", s - buffer + 1);
}
/* Look for the string "World". */
s = strstr(buffer, "World");
if (s != NULL) {
printf("\"World\" is at character %ld\n", s - buffer + 1);
}
/* Copy the first 5 characters to buffer2. */
strncpy(buffer2, buffer, 5);
buffer2[5] = '\0';
printf("buffer2: %s\n", buffer2);
/* Append 7 characters of " DeviceDevice" to buffer2. */
strncat(buffer2, " DeviceDevice", 7);
printf("buffer2: %s\n", buffer2);
/* Compare the first 6 characters of buffer and buffer2. */
if (strncmp(buffer, buffer2, 6) == 0) {
printf("The first 6 characters are equal\n");
}
/* Look for the last character 'v'. */
s = strrchr(buffer2, 'v');
if (s != NULL) {
printf("'v' is at character %ld\n", s - buffer2 + 1);
}
/* Create a copy of buffer2 and destroy it. */
s = strdup(buffer2);
printf("s: %s\n", s);
free(s);
s = NULL;
/* Compare two strings case-insensitive. */
if (strcasecmp(buffer2, "hello device") == 0) {
printf("strcasecmp: equal\n");
}
/* Compare 6 character of two strings case-insensitive. */
if (strncasecmp(buffer2, "hello world", 6) == 0) {
printf("strncasecmp: equal\n");
}
/* Split buffer at all spaces. */
s = strtok(buffer, " ");
while (s != NULL) {
printf("strtok: %s\n", s);
s = strtok(NULL, " ");
}
/* Convert a string into lower case. */
strlwr(buffer2);
printf("buffer2: %s\n", buffer2);
/* Convert a string into upper case. */
strupr(buffer2);
printf("buffer2: %s\n", buffer2);
/* Look for the characters 'L' and 'V'. */
s = strpbrk(buffer2, "LV");
while (s != NULL) {
printf("'%c' is at character %ld\n", *s, s - buffer2 + 1);
s = strpbrk(s + 1, "LV");
}
/* Look for the character 'O' in buffer2. */
l = strcspn(buffer2, "O");
printf("'O' is at character %d\n", l + 1);
/* Calculate how many characters at the beginning are E, H or L. */
l = strspn(buffer2, "EHL");
printf("%d characters at the beginneing are E, H or L\n", l);
for (;;);
return 0;
} </source>
Output
Text: Hello World Text is 11 Characters long Both strings are equal 'l' is at character 3 "World" is at character 7 buffer2: Hello buffer2: Hello Device The first 6 characters are equal 'v' is at character 9 s: Hello Device strcasecmp: equal strncasecmp: equal strtok: Hello strtok: World buffer2: hello device buffer2: HELLO DEVICE 'L' is at character 3 'L' is at character 4 'V' is at character 9 'O' is at character 5 4 characters at the beginneing are E, H or L