Difference between revisions of "Standard String Functions"
From Nutwiki
(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; ...) |
m (1 revision imported) |
(No difference)
|
Latest revision as of 18:03, 27 October 2016
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