i love you i hate you라고 치면
나 사랑해 너 나 싫어해 너 식으로 출력되는 코드인데
'나'만 나오고 안나와ㅏㅠㅠ
#include <stdio.h>
#include <string.h>
#define MaxWord 5
void Translate(char *pInput, char *pTranslation);
char *ReturnKoreanAddress(char *pFirstAddress);
char Dic[MaxWord][2][20]=
{
{"i", "나"},
{"love", "사랑해"},
{"like", "좋아해"},
{"hate", "싫어해"},
{"you", "너"}
};
void main()
{
char Input[128], Translation[256]={};
printf("영어를 128자 미만으로 입력하세요 : ");
gets(Input);
strlwr(Input);
Translate(Input, Translation);
printf("%s", Translation);
}
void Translate(char *pInput, char *pTranslation)
{
int i;
char *FirstAddress=pInput, *KoreanAddress;
for(i=0; i<strlen(pInput)+1; i++)
{
if(pInput[i]==' '||pInput[i]=='\0')
{
pInput[i]='\0';
KoreanAddress=ReturnKoreanAddress(FirstAddress);
if(KoreanAddress!='\0')
strcat(pTranslation, KoreanAddress);
else strcat(pTranslation, FirstAddress);
strcat(pTranslation, " ");
FirstAddress=&pInput[i+1];
}
}
}
char *ReturnKoreanAddress(char *pFirstAddress)
{
int i;
for(i=0; i<MaxWord; i++)
{
if(!strcmp(pFirstAddress, Dic[i][0])) return Dic[i][1];
}
return '\0';
}
짧은 코드라 해서 숏코딩인줄 알았네
조공도 없고 책 좀만 봐도 나오는 코드고
질문글 올릴때 주의점 1. 프갤 통합공지 올라온거부터 보고 물어본다. 2. 조공을 첨부해야 한다. 3. 정확하게 한명을 찝어서 물어볼것. 광역소환하면 광역으로 욕먹음
조공 갖고 오면 문제점 알려준다
앞으로는 은코르를 반드시 첨부하겠음.. 한번만 봐줘여;
난 옷 잘입고 슴가 큰 한국 느님들이 좋더라
어디가 잘못됐는지 찾긴 했어요 int Length=strlen(pInput)+1; for(i=0; Length; i++) 이렇게 바꾸니까 되던데 왜 이렇게 되는지 이해가안돼여;
힌트만 줄께. 한글은 2바이트고 영어는 1바이트다. 그리고 덮어씌워지고 길이가 바뀐다.
근원적인 해결은 안될껄?
직접 짠거냐? 예제로 보기에도 뭔가 좀 잘못된 구석들이 있다.
세그먼테이션 폴트 에러 안나냐능?
네 제가 짠거.. // 에러 안나더라고요
띄어쓰기나 줄 간격이 난장판이긴 해도 나쁘진 않네. 공백이나 널문자 나왔을때에 대해서, 그리고 이미 찾은 단어에 대해서 루틴을 좀 수정해봐. 지금은 좀 쓸데 없는 부분이 많다.
왜이리 복잡하게 짰냐?
그냥 공백으로 짤라서 함수에 넣고 해당 단어에 맞는 한글뜻 순서대로 출력하면 끝나잖아. 포인터도 쓸데없이 많어.