문제는 "길이(글자수)가 100이하인 문자열을 입력받아 공백을 제거하고 출력하시오."
입력은 abc def gh라면 출력은 abcdefgh로 해야 함
#include
main()
{
char a[101];
int i;
for(i=0;a[i]!=NULL;i++)
scanf("%s",&a[i]);
for(i=0;a[i]!=NULL;i++)
printf("%s",a[i]);
}
답일 것 같은데 실행이 안됨;;
추가적으로 %s대신 %c로 scanf하면
a[0]부터 순서대로 a,b,c, ,d,e,f 이런식이 아니라
a,b,c,c, ,..이런식으로 감.. 존나 어려워
main(c){for(;~scanf(" %c",&c);)putchar(c);}
배운게 아직 저거뿐이어요
for(int i=0;i<strlen(a);i++){if(a[i]!=' '){printf("%c", a[i]);}
' '넣으면 풀리는 건 알겠는데 저건 왜 실행이 안되는지, %c로 하면 왜 ' '를 c로 저장하는지 궁금해요
공백이랑 null이랑 다름 null은 캐릭터형으로 '0/0' 혹은 0 임
거기까지는 알고있는데 저 코드에 문제가 없지 않나 해서요
스캔부분 포문 지우고 scanf("%s", &a); 로 받으셈
그럼 abc까지만 받지 않음??
그리고 a가 초기화가 안돼있음
초기화가 뭐에요 어떻게시킴??
아 scanf 공백인식해서 받는거 까먹고 잇섯네
사이트에서 피드백하기론 배열의 크기를 벗어난 영역을 접근할 때 발생합니다.(음수인덱스, 배열의 최대크기-1 보다 큰 인덱스를 지정할때 발생)라고 하는데
초기화를 안하면 값이 전부 null임 전역변수로 선언하던가 지역변수로 선언하면 초기화를 해주던가
초기화를 안시키면 scanf에서 지정해줬는데도 null이라 떠요?
스캔 돌아가기도 전에 a[0]부터 null 이잖
그러면 a[101]={0,}; 으로 바꿔주면 문제 풀리나요?
{0,}넣어주니 실행은 되기 시작했는데 출력을 아무것도 안하는데
스캔 포문 지우고scanf(" %[^\n]", a); 로만 받으샘
그렇게 받아도 에러 뜸
일단 ^도 아직안배웠고 내가봤을때 저 코드에서 어디가 문제이기 때문에 인덱스 오류가 뜨는지, 왜 %c로 받았을 때는 a,b,c, ,d,e,f로 출력하지 않고 a,b,c,c, ,d,e로 출력하는지가 궁금했는데 그냥 독학 하던거 마저 해서 풀어봄
내가 함 돌려밧는데 잘돌아가는디int main(void) {char a[101] = {0,};scanf(" %[^\n]", a);for(int i=0;i<strlen(a);i++){ if(a[i]!=' '){ printf("%c", a[i]); }} return 0;}
포문 안고쳣나보네
아니 그거를 고치고 자시고의 문제가 아니라 지금 책 한 권 읽은 상태의 자식으로 저 코드가 어디가 문제이기때문에 오류가 뜨고 안되는지 물어보는거임 마치 이 그래프는 왜이렇게 빠르게 증가하냐고 물어본 중학생에게 이계도함수를 구하라고 조언하는 거 같은거임
포문이 문제임 포문 고치라고 한게 그 때문인디 포문 조건을 저런식으로 쓸려면 while 을 써보는걸 추천함
for의 어디가 문제가 되는지 모르겠음 띄어쓰기 기준으로 문자열이 하나씩 삽입될 때마다 a[0],a[1],..로 잘 지정되는 느낌인데 !=NULL때문에 끝부분도 잘 맞고
#include <stdio> main() { int a+; int i; for(i=0;i<=3;i++) a[i]=i; printf("%d%d%d%d",a[0],a[1],a[2],a[3],a[4]); } 이런 간단한 건 잘 풀림.
배열 끝에 NULL 기호가 들어가는데 for(~;a[i];~ 나 for(~;a[i]=0~ 으로 해야 끝에 NULL 기호까지 안들어감 NULL 기호까지 포문이 돌아가버리니 오류가 남
a[i]!=0