나는 모든 단어 집합을 알파벳으로 인쇄하는 프로그램을 작성하려고합니다. 이것은 주로 C에서 문자열과 포인터에 익숙해 지도록하는 테스트입니다. 재귀 적 솔루션에 정착했습니다. strcat에서 포인터를 사용하는 데 문제가있는 것처럼 보입니다. 왜 내가 여기에 segfaults를 얻게 될지 제안 해 주시겠습니까?알파벳으로 모든 단어 집합을 C로 인쇄하십시오
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define DIM 26
void print (char *);
char alphabet[26] = {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm',
'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'};
char word[26];
int main(void) {
*word = '\0';
print(word);
return EXIT_SUCCESS;
}
void print (char *word){
for (int i = 0; i < DIM; ++i){
strcat(word, alphabet[i]);
printf("%c\n", word);
print(*word);
}
}
'strcat'는 두 번째 인수로 문자열을 가져오고, char을 부여합니다. 적절한 편집이 당신에게 이것을 말해 줬을 것입니다. 예를 들어, gcc에서'-Wall'을 시도해보십시오. – Shahbaz
얼마나 많은 단어가 될지 깨닫고 있습니까? 잠시 인쇄 할 수 있습니다. –
코드가 컴파일되지 않습니다. 1. strcat는 문자가 아닌 두 번째 인수로 문자열을 가져옵니다. 2. print는 문자가 아닌 인수로 문자열을 가져옵니다. 3. printf의 % c는 문자열이 아닌 char을 얻습니다. – kotlomoy