C string文字列の実装
4735 ワード
Cでstring文字列を実装し、typedefを使用してstringをchar*として定義します.
#include
#include
#include <string.h>
typedef char* string;
string get_string(string);
int main(void)
{
string name = get_string("What's your name?
");
printf("Hello, %s!
", name);
printf("strlen: %d
", strlen(name));
return 0;
}
string get_string(string msg)
{
int len = 8;
string str = (string)malloc(sizeof(char)*len); // len
char *ptr = str; // ptr str
char ch;
int i = 0;
printf("%s", msg);
while ((ch = getchar()) != '
') // ,
{
*ptr++ = ch; // ch *ptr ptr
i++;
if (i == len) //
{
string tmp = str; // tmp str
len *= 2; //
str = (string)malloc(sizeof(char)*len); // str
strcpy(str, tmp); // tmp str
ptr = str + i; // ptr str i
free(tmp); //
tmp = NULL;
}
}
*ptr = '\0'; // '\0'
return str;
}