특정 문자를 특정 숫자로 변환해야하는 프로그램의이 부분에 문제가 있습니다 (기본적으로 a가 입력되면 1을 반환하고 싶습니다). intArray는 숫자를 캡처하지만 그 이후로 끝나지 않습니다. 그것은 더 많은 것을 인쇄하기 위해 계속됩니다. 문자 배열에 필요한 특정 길이가 없기 때문에 약간 많은 양을 넣습니다. str1은 입력되는 문자입니다.
char str1[200];
char alphabet[27] = "abcdefghijklmnopqrstuvwxyz";
int num[27] = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26};
int intArr1[200];
w = 0;
for(i=0;i<27;i++)
{
if(str1[w] == alphabet[i])
{
intArr1[w] = num[i];
w++;
i = 0;
}
else if(str1[w] == '\0')
{
break;
}
}
int len = sizeof(intArr1);
for(i=0;i<len;i++)
{
printf("%d", intArr1[i]);
}
몇 가지 문제 :
int len = sizeof(intArr1); // this line returns the number of
// bytes the array occupies (800 in your case)
for(i=0;i<len;i++)
{
printf("%d", intArr1[i]);
}
이 sizeof
작업은 귀하의 사용에 적합하지 않습니다.
둘째, 당신은 intArr
그것을 채울 때 당신 의 유용한 길이를 유지하기 위해 카운터를 유지하고 w
있습니다. 계산 된 len
변수 대신 이것을 사용해야 합니다.
for(i=0;i<w;i++)
{
printf("%d", intArr1[i]);
}
이렇게하면 배열의 유용한 내용이 인쇄되고 예상 할 때 끝납니다.
그러나 주석에서 지적했듯이 전체 목표에 따라 w
개수를 유지하기 위해 의 사용에만 의존하는 대신.의 크기를 추적하는 전체 글로벌 카운터를 intArr
유지하여 유효한 인덱스를 유지할 수 있습니다. 입력 데이터의 여러 패스에 대한 포인터.
행운을 빕니다...
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다