이 프로그램은 ascii 값에서 97을 뺀 값으로 char (문자열)의 배열을 정수 배열로 변환합니다 (입력은 소문자이어야하고 a는 ascii 값 97를 가져야합니다). 그래서 abcd 문자열을 입력하면 0123을 얻지 만 대신 어떻게 든 이걸 얻습니다 : 012134513789. 문제가 어디인지 알 수 없습니다.char 배열을 int 배열로 변환하는이 함수가 작동하지 않습니까?
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
void userEnter(int*pattern, int n);
int main(void)
{
int n, i;
printf("What is the length of the array: ");
scanf("%d",&n);
int pattern[n];
printf("Enter the char array: ");
userEnter(pattern, n);
printf("The int array is: ");
for(i=0;i<n;i++)
{
printf("%d",pattern[i]);
}
printf("\n");
}
void userEnter(int*pattern, int n)
{
char input[n];
scanf("%s", input);
int i;
for(i = 0; i < n-1; i++)
{
pattern[i] = input[i]-97;
}
}
유효한 문법을 사용하고 코드를 올바르게 들여 쓰기 바랍니다. –
'scanf ("% s", input);에 대기 버퍼 오버 플로우가 있고'n-1' 문자 이상을 입력하면'main'에서'n'을 덮어 쓰면됩니다. 'n-1' 문자 이상을 입력하지 않으면 제대로 동작합니다. –