[プログラマー]Lv1携帯電話番号


1.質問
  • 問題説明
  • 프로그래머스 모바일은 개인정보 보호를 위해 고지서를 보낼 때 고객들의 전화번호의 일부를 가립니다.
    전화번호가 문자열 phone_number로 주어졌을 때, 전화번호의 뒷 4자리를 제외한 나머지 숫자를 전부 *으로 가린 문자열을 리턴하는 함수, solution을 완성해주세요.
  • 制限条件
  • s는 길이 4 이상, 20이하인 문자열입니다
    2.学習の概念
  • 入る前に.
  • プログラマーの中で最初にcoteを用意すると、元の知り合いmain()とは違う形態solution()関数を簡単に考えればいいsolution()関数!
  • solution()は実際に提出された主関数格、solution()の括弧内の変数は実際の試験用例の形式
  • この問題に格納されているphone_number(010…)アドレス値を超える形式
  • 学習内容を徐々に補完する
  • 2.1動的割当て
  • malloc()メモリ内のヒープ領域を使用して動的に割り当てる
  • 関数の原型はvoid *malloc(size_t size)
  • size tサイズのメモリ割当てが成功したら最初のアドレスに戻るか、NULLに戻る
  • 割り当てられたメモリは必須!解除すべきです.
  • しないとメモリカードが発生する
  • 2.2文字列関数
  • c char *strcpy(char *des, const char *src);
  • desアドレスはchar*型に戻る
  • srcで「0」を見つけてdesにコピー
  • c void *memchr(const void *ptr, int value, size_t mum);
  • 検索するメモリブロックのアドレスをptrと表示し、検索する文字値を参照
  • numサイズで文字列から値を検索
  • valueが見つかればvalueのアドレスを1つ返さずNULLを返す
  • c char *strcat(char *des, const char *src);
  • des文字列後コピーsrc文字列
  • 「0」は各文字列の末尾に存在する必要があり、des文字列はsrc文字列+「0」をコピーするのに十分なメモリ領域が必要
  • c size_t strlen(const char* str);
  • const char*タイプの文字列を受け入れてその文字列長を返す関数
  • 「0」文字が現れるまでの文字数返却
  • 2.3その他
  • size_t
  • 対象または値に含まれる可能性のある最大データ量を示すデータ型
  • 符号無し整数タイプ使用
  • unsigned intはintと同様、オペレーティングシステムは64ビット、64ビット整数タイプではない場合もある
  • 逆にsize tは、オペレーティングシステムが32ビットのとき32ビットの符号無し整数、64ビットのとき64ビットの符号無し整数
  • 3.コード
    #include <stdio.h>
    #include <stdbool.h>
    #include <stdlib.h>
    
    
    char* solution(const char* phone_number) {
        
        char* answer = (char *)malloc(1); 
        strcpy(answer, phone_number);
        
        for(int i = 0; i < strlen(phone_number)-4; i++){
            
            answer[i] = '*';
        }
       
        
        return answer;
        
    }