#include #include char *SubString(char *buffer, const char *string, int start, int end) { memmove(buffer, string + start, end - start); buffer[end - start] = '\0'; return buffer; } char *Left(char *string, int ilength) { char *buffer; if (ilength <= (int)strlen(string)) { buffer = SubString(buffer, string, 0, ilength); return buffer; } return string; } char *Mid(char *string, int istart) { char *buffer; if (istart <= (int)strlen(string)) { buffer = SubString(buffer, string, istart -1, (int)strlen(string)); return buffer; } return NULL; } char *Mid2(char *string, int istart, int ilength) { char *buffer = ""; if (istart <= (int)strlen(string)) { if (istart + ilength - 1 <= (int)strlen(string)) { buffer = SubString(buffer, string, istart -1, istart + ilength - 1); return buffer; } buffer = SubString(buffer, string, istart -1, (int)strlen(string)); return buffer; } return NULL; } char *Right(char *string, int ilength) { char *buffer; if (ilength <= (int)strlen(string)) { buffer = SubString( buffer, string, (int)strlen(string) - ilength, (int)strlen(string)); return buffer; } return string; } void StringVBStrings(void) { char *s = "ABCDEF"; /* 右端から 4 文字の文字列を取得する */ printf("右端から 4 文字の文字列は %s です。\n", Right(s, 4)); /* 左端から 4 文字の文字列を取得する */ printf("左端から 4 文字の文字列は %s です。\n", Left(s, 4)); /* 左端から 2 文字目以降のすべての文字列を取得する */ printf("左端から 2 文字目以降のすべての文字列は %s です。\n", Mid(s, 2)); /* 左端から 2 文字目から 3 文字の文字列を取得する */ printf("左端から 2 文字目から 3 文字の文字列は %s です。\n", Mid2(s, 2, 3)); } int main(void) { StringVBStrings(); return 0; }