roomno 인트형으로 받는 함수임 roomno는 1~10사이의 정수라고 생각하셈
int i;
off_t offset;
offset = (roomno - 1) * NAMELENGTH; // NAMELENGTH는 41
if (lseek(filedes, offset, SEEK_SET) == -1) // 파일 위치 이동
return -5;
for(i=0 ; i<NAMELENGTH-1 ; i++)
{
tempbuf[i] = ' '; // 임시 버퍼에 [0~39]배열에 스페이스공백으로 채움 글로벌변수 tempbuf라는 char tempbuf[41]로 생성해놓음
}
tempbuf[NAMELENGTH-1] = '\n'; // 버퍼 마지막에는 개행문자로
if ( write(filedes, tempbuf, NAMELENGTH) < NAMELENGTH) // write체크
return (-5); // 잘못되면 -5 리턴해줌
return 0;
여기서 자꾸 저기 write 가 잘못된것처럼 -5가 리턴되거든?
filedes는 이미 글로벌로 정의된상태 신경쓰지말것
write로 파일에 안써진다는건데 왜 안써짐??? tempbuf에 공백으로 채워서 lseek으로 offset위치 찾아가서 write로 공백으로 overwrite 하는건데..
제발 도와줘..
문제있어서 리턴하는거면 문제 원인마다 다른 값으로 리턴시키게 해서 구분을 하던지
write하기 전에 printf로 값 제대로 나왔는지는 확인해봤어?
넹 확인해봤어요 write부분이 확실히 문제에요 왜냐면 lseek부분에서 넘어가는걸 확인했으니... lseek 다음으로 넘어가는거 출력으로 확인했어요. 버퍼저장부분은 확인안해봤지만.. 저장이 안될수가 있나요 저 코드에서 ㅠㅠ 하.. 뭐가문젠지 이론상으론 완전한것같은데
그 변경되는 파일도 일부러 권한 777로 줘서 권한문제도없게했고..
바로 윗부분 tempbuf 안에 들어가는 문자들 확인결과 정확히 0~39 버퍼배열까지 공백, 40에는 개행문자 들어가는거 확인했어요