c언어에서 함수 실행시 함수에 들어가는 값 사이에 변수 값 삽입하기(?)
c언어를 공부하고 있는 초보자인데요
drive_check=access("C:\clean.vhd",0);
if(drive_check==0)
drive='C';
drive_check=access("D:\clean.vhd",0);
if(drive_check==0)
drive='D';
drive_check=access("E:\clean.vhd",0);
if(drive_check==0)
drive='E';
이런 문장을 반복문으로 처리하려고 합니다.
여기서 드라이브 명 부분을 변수로 치환해서
반복될때마다 드라이브명을 대체하는 변수를 증가시켜서(67, 68, 69 ...) 계속 체크하게 하려고 하는데요.
이것이 php처럼 간단하게 되질 않는군요.
kldp의 글을 쭉 살펴보니 snprintf() 를 사용해서 할 수 있다고는 하시는데(http://kldp.org/node/37488)
댓글을 쭉 살펴보면 c언어 입문서에도 있다고 하시는데요.
물론 각 데이터 타입에 대한건 있지만 snprintf()과 같은 함수의 사용법이나 예제 혹은 유사 기능을 가진 것은 전혀 나와있지 않습니다..
더 찾아보니 snprintf()는 표준 C 함수가 아니라고 합니다.
그래서 제가 독학으로 쓰던 '김용성의 C/C++ 완벽가이드' 와 대학에서 쓰고 있는(1학년입니다) '개념을 콕콕 잡아주는 C프로그래밍' 두권 모두 유사 기능에 대한 언급이 전혀 없어서 난항을 겪고 있는데요.
php의 "423142" + 변수명 + "23421#$" 와 같은 기능을 사용하는 함수의 사용법과 기능에 대해 알고 싶습니다..
C에서 문자열과 문자열의 덧셈은 정의되지 않으므로
C에서 문자열과 문자열의 덧셈은 정의되지 않으므로 수동으로 다른 문자열에 채워넣어야 합니다.
그런데 이경우는 첫글자만 바꾸는거니까
이래도 되겠죠.
말씀하신대로 snprintf는 비표준이지만 표준에는 비슷한 sprintf가 있습니다.
sprintf의 사용이 지양되는 이유는 문자열의 총길이를 제한할 수 없기 때문인데, 적당히 이를 차단할 수 있는 방법이 있거나 혹은 주어진 문자열 버퍼보다 길어질일이 없다는게 보장된다면 사용해도 됩니다.
아 맞다..
저 방법이 있는데 왜 복잡해게 생각했을까요.. 자리 위치가 변하지 않는 상황인데..ㅠ
프로그래밍 언어는 알고보면 단순한데 만들땐 괜히 어렵게 느껴지는게 많네요
댓글 달기