언어/c언어

c언어 URL

파아랑새 2017. 10. 2. 10:36

문제 : https://lavida.us/problem.php?id=1002

# include <stdio.h>

# include <string.h>

# define SIZE 81

typedef struct LavidaQue{

char strData[81];

char dstData[81];

}LavidaQue, *ptrLavidaQ;

// 

ptrLavidaQ createNode(); // [1]

void init(LavidaQue** param); // [2]

void writeUrl(LavidaQue** param); // [3]

void strSwitch(LavidaQue** param); // [4]

void dataPrintf(LavidaQue** param); // [5]

int main(void) {

ptrLavidaQ LavURL = NULL;

LavURL = createNode();

init(&LavURL);

writeUrl(&LavURL);

strSwitch(&LavURL);

dataPrintf(&LavURL);

free(LavURL);

return 0;

} // end of main function


ptrLavidaQ createNode() { // [1]

ptrLavidaQ newNode = (ptrLavidaQ)malloc(sizeof(LavidaQue));

return newNode;

} // end of createNode function 


void init(LavidaQue** param) { // [2]

if ((*param) == NULL) {

exit(1);

}

else {

// (*param) != NULL

strcpy((**param).strData, "\0");

strcpy((**param).dstData, "\0");

}

} // end of init function


void writeUrl(LavidaQue** param) { // [3]

fgets((**param).strData, SIZE, stdin);

} // end of writeUrl function 


void strSwitch(LavidaQue** param) { // [4]

int i = 0;

int j = 0;

while (i!= strlen((**param).strData)){

if ((**param).strData[i] == '%') {

i += 2;

switch ((**param).strData[i])

{

case '0': 

(**param).dstData[j++] = ' ';

break;

case '1': 

(**param).dstData[j++] = '!';

break;

case '4':

(**param).dstData[j++] = '$';

break;

case '5':

(**param).dstData[j++] = '%';

break;

case '8':

(**param).dstData[j++] = '(';

break;

case '9':

(**param).dstData[j++] = ')';

break;

case 'a':

(**param).dstData[j++] = '*';

break;

}

i++;

}

else { // (**param).strData[i] != '%'

(**param).dstData[j++] = (**param).strData[i++];

}

}

(**param).dstData[j] = '\0';

} // end of strSwitch function 


void dataPrintf(LavidaQue** param) {

printf("%s\n", (**param).dstData);

} // end of dataPrintf function