K&Rを読もう(35) 演習 3-2 特殊文字のエスケープ
なんだか危険な香りのする問題。
演習 3-2
\n,\tを\\n,\\tに変換する問題。
escape(s, t)だと、問題がありそうな関数なので、mallocを使ってメモリを確保した。
#include <stdio.h> #include <stdlib.h> #include <string.h> char *escape(char *s); int main(void) { char *e; e = escape("aa\nbb\tcc\ndd\t"); printf ("%s\n", e); free(e); return EXIT_SUCCESS; } char *escape(char *s) { char *e = malloc(2 * sizeof (char) * strlen(s) + sizeof (char)); char *head = e; for(;*s != '\0'; s++, e++) { switch (*s) { default : *e = *s; break; case '\n' : *e++ = '\\'; *e = 'n'; break; case '\t' : *e++ = '\\'; *e = 't'; break; } } *e = '\0'; return head; }
リストがホシィ。
逆も同じようなものなのでパス!