내 과제의 목적은 사용자 입력 문자열을 받아 사용자가 입력 한 영문자 (소문자와 대문자 모두)를 출력하는 것입니다.
예를 들어 사용자가 입력 D_!an!_ i12el
하면 출력은 Daniel
. 내 접근 방식은 입력을 반복하고 알파벳이 아닌 모든 문자를 제거하는 것이었지만 방법을 모르겠습니다. 아이디어가 있으면 도와주세요! 이것이 내가 지금까지 가지고있는 것입니다.
#include <stdio.h>
#include <string.h>
int main()
{
char my_array[100];
printf("Enter a message: ");;
while(strlen(gets (my_array)) == 0);
printf(" Your message is: %s\n", my_array);
for(int i = 0; i< strlen(my_array);i++)
{
if(my_array[i] < 'A' || my_array[i] > 'z')
{
my_array[i] = ' ';
}
}
printf(" Your new message is: %s\n", my_array);
}
편집 : 알파 문자 만 인쇄하도록 루프가 작동했지만 요소를 인쇄 할 때 추가 문자가 계속 추가됩니다. 예를 들어 D_! a _ * & Ni # 32el은 DaNielASCIIV가됩니다. 왜 이런 일이 일어나는지 모르겠습니다.
for(int i = 0; i< 100;i++)
{
if (isalpha(message[i]))
{
putchar(message[i]);
}
}
가지고있는 문자열을 업데이트하는 대신 문자 인 경우 문자를 인쇄하십시오.
또한 대문자와 소문자가 바로 뒤 따르지 않으므로 별도로 확인해야합니다.
printf(" Your new message is: ");
for(int i = 0; i< strlen(my_array);i++)
{
if((my_array[i] >= 'A' && my_array[i] <= 'Z') ||
(my_array[i] >= 'z' && my_array[i] <= 'z'))
{
putchar(my_array[i]);
}
}
printf("\n");
또는 위의 if
조건을이를 확인하는 함수로 바꿀 수 있습니다 .
if (isalpha(my_array[i]))
편집하다:
이제 추가 문자가 표시되는 이유는 문자열 길이 대신 전체 배열을 반복하도록 루프를 변경했기 때문입니다. strlen(my_array)
대신 사용으로 돌아 100
가면 괜찮을 것입니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다