substring 関数 - 20100926
substring 関数を自作してみた。strlen と sizeof の違い、malloc の時にどのようにサイズを指定するかとか、よくわからない部分も多かったが、とりあえず書いてみた。渡した文字列引数の start 文字目から end 文字目まで返す、という点は確認した。でも end が実際の文字列より多い場合の考慮がされていないけれど。。。それはまた今度。
#include <stdio.h> #include <stdlib.h> #include <string.h> char * substring(const char str[], int s, int e){ int start = s; int end = e; int length = end - start; if( length < 0 ){ int temp = start; start = end; end = temp; length = length * -1; } char * value = (char *)malloc(sizeof(char) * (length + 1)); int i = 0; while( i < length ){ value[i] = str[start + i]; i++; } value[length] = '\0'; return value; } int main(int argc, char * args[]){ char * v1 = substring(args[1], 0, 3); char * v2 = substring(args[1], 3, 1); printf("substring(args[1], 0, 3) is v1, v1 value is %s, strlen(v1) is %zd, sizeof(v1) is %lu.\n", v1, strlen(v1), sizeof(v1)); printf("substring(args[1], 3, 1) is v2, v2 value is %s, strlen(v2) is %zd, sizeof(v2) is %lu.\n", v2, strlen(v2), sizeof(v2)); free(v1); free(v2); return 0; }