C언어 반복문에서 i 제어변수가 왜 1로 바뀌는지 모르겠습니다.
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차원 배열은 선언후 어떤방법으로 초기화를 해야하는건가요?
일단 해보니 정상적으로 0이 나옵니다.
파일 처리 관계된 부분은 제거하고 나머지만 복사하여 호출해보니 0이 제대로 출력됩니다.
그리고 copy[1]은 포인터이니 '0'을 바로 넣을 수 없는 게 당연합니다. 말씀하신대로 하면 되지요.
--
댓글 달기