배열에 저장된 데이타 삭제하는 방법좀 가르쳐주세요..
정수형 배열을 선언하고 for문을 이용해서 데이타를 넣고 나서 배열의 첫번째 주소에 들어있는 정수형 데이타를 삭제하고 나머지 데이타들을 한칸씩 앞으로 당겨서 저장한다음 출력하는 방법좀 가르쳐 주세요.
물론 마지막 배열주소에 저장된 데이타가 한칸 앞주소에 저장되었으니까 그 위치가 널문자가 들어가야되거든요.
다음과 같이 코딩을 했는데 먹히지가 않거든요.
#include <stdio.h>
main()
{
int i;
nt a[10];
int *ptr = a;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
*ptr = " "; //여기서 데이타 삭제코딩을 잘못한것 같거든요.
for(i=1;i<10;i++)
*(ptr+i-1)=*(ptr+i);
*(ptr+9) = '\0';
for(i=0;i<9;i++)
printf("%d\t",*ptr++);
printf("\n");
}
55글자 더 채워주세요.
1개의 답변이 있어요!
- #include <stdio.h> int main() { int i; int a[10]; // nt를 int로 고쳐 봤습니다. int *ptr = a; // 이 변수가 왜 있는지 잘 모르겠군요! for(i=0;i<10;i++) scanf("%d",&a[i]); // *ptr = " "; // a[0]에 이상한 값을 넣었군요...! for(i=1;i<10;i++) *(ptr+i-1)=*(ptr+i); *(ptr+9) = 0; // '\0'은 값이 0인 char 리터럴입니다. int니까 0으로 쓰는 게 좋겠죠? for(i=0;i<9;i++) printf("%d\t",*ptr++); printf("\n"); }
*ptr = " " 부분을 빼고 nt a[10]을 int a[10]으로 바꾸니 잘 되네요! :D
array[index]는 *(array + index)와 같고, &array[index]는 array + index와 같습니다.
*(ptr+9)로 쓰셨는데, 가독성을 위해 ptr[9]로 쓰는 것이 더 좋습니다!