주어진 날짜에 해당 날짜를 인쇄해야합니다. 예를 들어 출력이 18 5 2014 인 경우 출력은 일요일이어야합니다. 이 같은 내 프로그램 작성 :쉘 스크립트를 사용하여 주어진 날짜의 c 날짜 인쇄.
#include <stdio.h>
#include <stdlib.h>
int main()
{
int d,m,y ;
char command[20];
printf("Enter d: ");
scanf("%d",&d);
printf("Enter m: ");
scanf("%d",&m);
printf("Enter y: ");
scanf("%d",&y);
sprintf(command , "date -d %d/%d/%d | cut -b 1-3 ",m,d,y);
system(command) ;
return 0 ;
}
을하지만 출력은 조금 무섭다 :
Sat
*** stack smashing detected ***: ./a.out terminated
======= Backtrace: =========
/lib/x86_64-linux-gnu/libc.so.6(__fortify_fail+0x37)[0x7fd1e8d89f47]
/lib/x86_64-linux-gnu/libc.so.6(__fortify_fail+0x0)[0x7fd1e8d89f10]
./a.out[0x400743]
/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xed)[0x7fd1e8ca076d]
./a.out[0x4005a9]
======= Memory map: ========
00400000-00401000 r-xp 00000000 08:05 21758155 /home/shahjahan/a.out
00600000-00601000 r--p 00000000 08:05 21758155 /home/shahjahan/a.out
00601000-00602000 rw-p 00001000 08:05 21758155 /home/shahjahan/a.out
0240d000-0242e000 rw-p 00000000 00:00 0 [heap]
7fd1e8a69000-7fd1e8a7e000 r-xp 00000000 08:05 790189 /lib/x86_64-linux-gnu/libgcc_s.so.1
7fd1e8a7e000-7fd1e8c7d000 ---p 00015000 08:05 790189 /lib/x86_64-linux-gnu/libgcc_s.so.1
7fd1e8c7d000-7fd1e8c7e000 r--p 00014000 08:05 790189 /lib/x86_64-linux-gnu/libgcc_s.so.1
7fd1e8c7e000-7fd1e8c7f000 rw-p 00015000 08:05 790189 /lib/x86_64-linux-gnu/libgcc_s.so.1
7fd1e8c7f000-7fd1e8e34000 r-xp 00000000 08:05 786443 /lib/x86_64-linux-gnu/libc-2.15.so
7fd1e8e34000-7fd1e9034000 ---p 001b5000 08:05 786443 /lib/x86_64-linux-gnu/libc-2.15.so
7fd1e9034000-7fd1e9038000 r--p 001b5000 08:05 786443 /lib/x86_64-linux-gnu/libc-2.15.so
7fd1e9038000-7fd1e903a000 rw-p 001b9000 08:05 786443 /lib/x86_64-linux-gnu/libc-2.15.so
7fd1e903a000-7fd1e903f000 rw-p 00000000 00:00 0
7fd1e903f000-7fd1e9061000 r-xp 00000000 08:05 786555 /lib/x86_64-linux-gnu/ld-2.15.so
7fd1e9249000-7fd1e924c000 rw-p 00000000 00:00 0
7fd1e925c000-7fd1e9261000 rw-p 00000000 00:00 0
7fd1e9261000-7fd1e9262000 r--p 00022000 08:05 786555 /lib/x86_64-linux-gnu/ld-2.15.so
7fd1e9262000-7fd1e9264000 rw-p 00023000 08:05 786555 /lib/x86_64-linux-gnu/ld-2.15.so
7fffe219c000-7fffe21bd000 rw-p 00000000 00:00 0 [stack]
7fffe21fe000-7fffe2200000 r-xp 00000000 00:00 0 [vdso]
ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0 [vsyscall]
Aborted (core dumped)
이 출력은 첫 번째 라인을해야하지만 내가 왜 이런 식으로는 무엇입니까? 도와주세요.
20 바이트 이상을'command'에 넣으려고하면 스택이 깨질 수 있습니다. – Pavel