Visual Studio/C 기초
-
C언어 문자열 복사 [strcpy()]Visual Studio/C 기초 2013. 6. 15. 15:35
함수 strcpy()는 전체 문자열을 다른 메모리 영역으로 복사합니다. strcpy()를 사용할 때에는 복사할 문자열을 저장하기 위한 영역을 할당해야 합니다. 이 함수는 새로 복사할 공간이 이미 할당 되어 있는 영역인지 알 수 없습니다. 만약 메모리 영역이 할당되지 않았다면 함수는 새로 복사할 공간부터 시작하여 strlen(source)만큼의 메모리 영역을 덮어쓸 것입니다. 이것은 예상할 수 없는 문제를 일으킵니다. #include #include #include char name[80]; main() { char anew[80]; char *anew2, *anew3; printf("문장을 입력해주세요 : "); gets(name); strcpy(anew, name); //anew에 name의 내용을 복..
-
C언어 문자열 길이 계산 [strlen()]Visual Studio/C 기초 2013. 6. 15. 15:19
프로그램에서는 가끔 문자열의 길이를 알 필요성이 있습니다. 여기서 strlen을 선언할 때에는 size_t를 이용해 선언하는데, string.h에서는 size_t가 unsigned로 정의되어 있으므로 함수 strlen()는 기호 없는 정수 형을 돌려줍니다. #include #include main() { size_t leng; char buf[80]; while(1) { printf("문장을 입력해주세요. 빈칸을 입력하면 종료됩니다 : "); gets(buf); leng=strlen(buf); if(leng!=0) printf("이 문장의 길이는 %u 입니다.\n",leng); else break; } } 먼저 문장을 입력받을 배열 80칸의 buf를 선언하고 문장을 buf로 입력받은 후에 buf의 길이를..
-
C언어 임시파일 사용 [tmpnam()]Visual Studio/C 기초 2013. 6. 15. 15:11
임시 파일은 프로그램에 의해서 생성되고 프로그램이 실행되는 동안 다른 목적으로 사용되다가 프로그램이 종료되기 전에 삭제되는 파일입니다. 나중에 삭제할 것이기 때문에 파일의 이름에 대해서 신경 쓰지 않아도 되지만 중복되지 않는 파일의 이름을 사용하여야 합니다. #include main() { char buf[10], *c; tmpnam(buf); //정의된 배열에 임시 이름을 저장 c = tmpnam(NULL); printf("임시 이름 1 : %s\n",buf); printf("임시 이름 2 : %s\n",c); } 임시 파일의 이름은 다르게 생성될 수 있습니다.
-
C언어 파일 복사Visual Studio/C 기초 2013. 6. 14. 00:02
C언어 프로그램에선 파일을 직접 복사하는 기능이 없어서 여러 함수를 사용하여 복사해야 합니다. 자세한 내용은 예제를 보면서 설명해 드리겠습니다. #include #define MAX 80 int copy(char *exist, char *anew); main() { char src[MAX], target[MAX]; //src는 원본, target은 복사 될 새로운 파일 이름. printf("원본 파일 이름을 입력하세요 : "); gets(src); printf("복사 될 파일 이름을 입력하세요 : "); gets(target); if(copy(src,target)==0) //맨 아래 주석 참조 printf("복사가 성공적으로 완료되었습니다.\n"); else fprintf(stderr,"파일을 복사하는 ..
-
C언어 파일 이름 변경하기 [rename()]Visual Studio/C 기초 2013. 5. 15. 16:46
파일 이름을 변경하기 위해서는 rename()함수를 사용하여야 합니다. 한가지 주의하실 점은, 파일 이름을 변경하기 위해선 기존 이름과 새 이름의 디스크 드라이버 볼륨이 동일해야 한다는 점입니다. 서로 다른 디스크 드라이브에 존재하는 파일의 이름을 변경하는 것은 불가능합니다. 함수 rename()의 동작이 성공적이라면 0값을 돌려주고, 다른 에러가 발생하면 -1값을 돌려줍니다. 에러의 종류는 다음과 같습니다. 1. 기존의 파일이 존재하지 않을 경우 2. 변경할 이름의 파일이 이미 존재할 경우 3. 서로 다른 디스크에서 이름을 변경 하려고 할 경우 (ex - c:\hello.bat ->d:\hi.bat) #include main() { char oldname[80], newname[80]; printf("..
-
remove()Visual Studio/C 기초 2013. 5. 15. 16:34
파일을 삭제하기 위해서 라이브러리에 포함되어 있는 remove()함수를 사용합니다. 지정된 파일이 존재한다면 DOS프롬프트에서 del명령이나 유닉스에서 rm 명령을 사용한 것과 마찬가지로 삭제되고, remove()함수는 0 값을 돌려줍니다. 만약 파일이 존재하지 않거나, 읽기 전용 상태이거나, 사용하고 계신 윈도우 사용자 계정의 권한이 제한되어 있을 경우 에러가 발생합니다. 에러가 발생할 경우 remove()는 -1값을 돌려줍니다. 주의하실 점은 휴지통을 거치지 않고 바로 삭제되기 때문에 주의를 하셔야 합니다. #include main() { char filename[80]; printf("삭제할 파일 이름을 입력하세요 : "); gets(filename); if(remove(filename)==0) /..
-
feof()Visual Studio/C 기초 2013. 2. 14. 18:17
feof 함수에 대해 알아보겠습니다. feof()는 파일의 마지막을 찾기 위해 사용하는 함수인데요, 파일의 정확한 길이를 모르는 상태에서 파일의 처음부터 마지막까지를 읽어들이기 원하는 경우엔 방법이 두 가지가 있습니다. 텍스트 모드의 파일에서 문자 단위로 값을 읽어들일 때는 EOF 문자를 찾을 수 있습니다. EOF는 표준 입출력에 정의되어 있는 -1값이며 실제론 사용되지 않는 값입니다. 그래서 EOF가 발견되면 파일의 마지막에 도달했다는 것을 알 수 있습니다. while((c=fgetc(fp)) != EOF) //이런 식으로 찾을 수 있죠 이제 feof를 사용해보겠습니다. int feof(FILE *fp); 인수 fp는 파일을 열 때 fopen()이 돌려주는 FILE형 포인터입니다. feof()는 파일 ..
-
fseek()Visual Studio/C 기초 2012. 11. 5. 18:18
fseek() 앞의 포스트에서 ftell()과 rewind()를 이용해 위치표시를 재설정하는 방법에 대해 설명했습니다. fseek()는 스트림의 위치표시를 더욱 정확하게 제어하기 위해서 사용되는 함수입니다. fseek()를 사용하면 위치표시가 파일 내에서 랜덤한 위치를 가리키도록 설정할 수 있습니다. fseek(FILE *fp, long offset, int origin); fp는 파일에 대한 포인터입니다. 자주 언급하는 내용이니 넘어가겠습니다. 위치표시가 이동되는 거리는 offset에 바이트 단위로 지정되기 때문에 sizeof()많이 사용합니다. origin은 이동이 시작되는 위치를 지정합니다. origin에 사용할 수 있는 기호 상수가 따로 있기 때문에 알려드리겠습니다. *origin에 사용할 수 있..