숫자를 로마 숫자로 변환하는 프로그램을 작성하려고했습니다. (여기에있는 코드의 복제본은 How to convert integer value to Roman numeral string?입니다.) 저는 프로그램 논리가 알 맞다고 확신합니다. printf()
여기 런타임 오류가 발생하는 이유포인터를 사용하여 문자열 인쇄 : 런타임 오류
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main(){
const char *huns[] = {"", "C", "CC", "CCC", "CD", "D", "DC", "DCC", "DCCC", "CM"};
const char *tens[] = {"", "X", "XX", "XXX", "XL", "L", "LX", "LXX", "LXXX", "XC"};
const char *ones[] = {"", "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX"};
const int size[] = {0, 1, 2, 3, 2, 1, 2, 3, 4, 2};
char *_buffer;
unsigned int num;
input:
printf("Enter number to convert:\n");
scanf("%ud", &num);
if(num>4000)
goto input;
while(num>=1000){
*_buffer++ = 'M';
num -= 1000;
}
strcpy (_buffer, huns[num/100]); _buffer += size[num/100]; num = num % 100;
strcpy (_buffer, tens[num/10]); _buffer += size[num/10]; num = num % 10;
strcpy (_buffer, ones[num]); _buffer += size[num];
*_buffer ='\0';
printf("%s", _buffer); // This is where the Runtime Error occurs.
return 0;
}
누군가가 설명해 주시겠습니까 : 여기 내 코드는? 나는 puts()
도 시도했는데 작동하지 않았다. 컴파일 및 코드 : 블록 13.11 (MINGW gcc)뿐만 아니라 http://ideone.com, 시도했지만 모두 동일한 오류가 발생합니다.
왜냐하면 당신은'_buffer'를위한 메모리를 할당하지 않기 때문입니다. .. malloc .. – GoldRoger