C언어 반복문에서 i 제어변수가 왜 1로 바뀌는지 모르겠습니다.

seojh1431의 이미지

void bookAdd()
{
FILE *fp;
fp = fopen("list.txt", "a+");


if (fp == NULL)
{
printf("Append error \n");
exit(1);
}


char name[100];
int i = 0;
char copy[50][61];
printf("추가할 책 이름 ( 그만 추가하시려면 0번을 누르세요 ) : ");
while (1)
{
gets(name);
if (name[0] == '0')
break;
printf("%d\n", i); // i값은 0이어야하는데 여기 부분이 1로 대입되고 있습니다.
strcpy(copy[i], name); // 그래서 여기는 copy[1]값부터 name값이 대입되더라구요..

fprintf(fp, "%s\n", name);
i++;
}

copy[i][0] = '0';

i = 0;
printf("----------------추가한 책 목록--------------- \n");

while (copy[i][0] != '0')
{
printf("%d. %s\n", i+1,copy[i]);
i++;
}

fclose(fp);

}

여기서 또 궁금한게 있는데 copy[1]='0'; 으로 하면 왜 오류가 뜨는거죠??

왼쪽 피연산자는 l-value이어야 합니다. 라고 오류가 뜨는군요.

그럼 copy[i] 에 값을 넣어줄려면 strcpy를 사용해야 되는건가요?

2차원 배열은 선언후 어떤방법으로 초기화를 해야하는건가요?

mirheekl의 이미지

파일 처리 관계된 부분은 제거하고 나머지만 복사하여 호출해보니 0이 제대로 출력됩니다.

그리고 copy[1]은 포인터이니 '0'을 바로 넣을 수 없는 게 당연합니다. 말씀하신대로 하면 되지요.

--