char *str_func2(char *buf, char *str, int len)
{
int s_len;
int chk_len;
char *bufp;
bufp = buf;
chk_len = 1;
buf[len] = '\0'; if ((s_len = strlen(str)) == len) { strncpy(bufp, str, len); return(buf); } memset(bufp, '0', len); if (*str == '-'){ *(bufp++) = '-'; ++str; } if (s_len < len){ strcpy(bufp+(len - s_len), str); return (buf); } while (*str != '\0'){ if (*str != '0'){ break; } ++str; --s_len; } if (s_len <= len){ strcpy(bufp + (len - s_len), str); return (buf); } while (s_len > len) { if (*str == '.') { buf[0] = '\0'; return(NULL); } ++str; --s_len; } while (*str != '\0') { if (*str == '.') { *(bufp++) = '.'; ++str; chk_len = 2; } else { *(bufp++) = '9'; ++str; chk_len += ((chk_len >= 2) ? 1 : 0); } } chk_len += ((buf[0] == '-') ? 1 : 0); if (len < chk_len) { return(NULL); } return (buf);
}
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。