앞에 숫자와 뒤에 숫자를 나눠서 출력할려는데요(소스)
Sona
질문 제목 : 앞에 숫자와 뒤에 숫자를 나눠서 출력할려는데요(소스)
#include stdio.h
#include string.h
#define AA0xFF
int main(int argc, char** argv)
{
if(argc2)
return 0;
char* Num;
Num = argv[1];
strncpy(Num, Num, 2);
printf(Num:%s\n, Num);
return 0;
printf(test:%d,AA);
return 0;
}
제가 할려는건 argv에 인자로 1122 값을 넣으면 11앞에 두자리만 출력할려고 하는데요;;
char이 1바이트이니 strncpy(Num, Num, 2); 두 바이트를 복사해서 출력하면 11이 나올거 같았는데요;
1122가 그대로 출력이 되는데 제가 잘못이해하고 있는건가요?
-
Judicious 2023-10-07
문자열의 저장 방식과 출력 방식에 대한 이해가 필요하실 것 같군요.
1122를 저장했다면 해당 문자열은
1 1 2 2 \\0
으로 저장이 됩니다.
그리고 출력시에 %s는 \\0이 있는 곳까지 문자열을 출력한다는 의미입니다.
num에서 num으로 두 글자를 복사한다면 어떻게 될까요?
1 1 2 2 \\0 - 1 1 2 2 \\0
1 1만 복사를 했으니, Num의 내용이 바뀐게 없겠죠?
새로운 변수를 만드시고, 거기에 복사를 해 보세요. ^^ -
해늘 2023-10-07
아 pszNum은 옮기는 과정에서 오타가...
-
해긴 2023-10-07
복사는 Num에 했는데, 출력은 pszNum을 하네요. ^^;;;
그리고 원본, 대상이 둘 다 대상이 같네요. 자기 자신에다 복사하게 되면, Num에는 어떻게 값이 복사가 될까요?