구조체 질문있습니다!
글쓴이: josimhaela / 작성시간: 월, 2010/11/29 - 2:53오후
#include <stdlib.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <string.h> #include <stdio.h> struct userInfo { char ID[10]; char pw[15]; }; void makeUserInfo(struct userInfo *uinfo, char *ID, char *pw) { memset((void *)uinfo, 0x00, sizeof(struct userInfo)); strcpy(uinfo->ID, ID); strcpy(uinfo->pw, pw); } int main() { int fd; struct userInfo linuxusr; int i; char ID[10]; char pw[15]; fd=open("member.txt", O_CREAT|O_WRONLY, S_IRUSR|S_IRGRP|S_IWGRP); if(fd<0) { perror("Error while opening file"); return 1; } for(i=0;;i++){ printf("Type the user id: "); scanf("%s",ID); fflush(stdin); printf("Type the password: "); scanf("%s",pw); fflush(stdin); makeUserInfo((void *)&linuxusr, ID, pw); write(fd, (void *)&linuxusr, sizeof(linuxusr)); } close(fd); return 0; }
위에서 출력 결과물 member.txt 를 vi 나 cat으로 보면 전부다 나오는데
strings member.txt 를 하면
처음에 받는 id 랑 pw 는 나오고 다음에 나오는 id는 표시가 안되는데
중간에 널값이나 그런게 들어가서 그런건가여 ?
아니면 구조체 변수 linuxusr 을 배열로 해서 처리해야 하나요 ?
Forums:
음...
k2hyun\0\0\0\0dirmsrmawl\0\0\0\0\0
member.txt 파일에는 이렇게 저장되겠지요.
strings는 문자열 부분만 출력하니 저런 결과가 나올 듯 합니다.
더 이상 없다.
댓글 달기