c언어 URL
문제 : 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