이 프로그램은 "printPigWord (temp);"를 주석 처리하면 잘 작동합니다. 그리고 그것은 문제없이 단어를 토큰 화하지만 그 줄을 다시 추가하면 다음 토큰을 수행하지 않습니다. 1 개의 "pig latin"단어를 인쇄하고 main으로 돌아간 다음 세분화 오류가 발생합니다. 그 원인이 무엇인지 모르겠습니다.
int main (void){
char phrase[50];
char *token, c, temp[20];
int i=0;
printf("Enter a phrase to be translated into pig latin: ");
c = getchar();
while( c != '\n'){
phrase[i++] = c;
c = getchar();
}
phrase[i] = '\0';
token = strtok(phrase, " ");
while(token != NULL){
strcpy(temp, token);
printPigWord(temp);
token = strtok(NULL, " ");
}
return 0; /*Successful completion*/
}
void printPigWord(char token[20]){
char first[1];
char temp[20];
/*save first letter */
strncpy(first, token, 1);
first[1] = '\0';
/*add ay to end of first letter*/
strcat(first, "ay");
/*remove first letter of token*/
strcpy(temp, &token[1]);
/*add first letter+ay to end of token*/
strcat(temp, first);
/*print out token*/
printf("%s\n", temp);
}
Hmpf. 첫 번째는 길이가 1 자입니다. 이것에 연결할 수 없습니다. 그렇지 않으면 다른 것을 덮어 씁니다 (예 : temp) ...
first[1] = '\0'; // already out of boundes
/*add ay to end of first letter*/
strcat(first, "ay"); // again, first can carry only one char
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다