Мне нужно изменить переменную shellCode, чтобы печатать этот год после запуска этой программы.
Используя strftime , следующий код можно использовать для заполнения shellcode
текущим годом (если shellcode
создано с достаточным количеством пробелов.):
char shellcode[] = "0000"; //increase space for 4 characters + nul.
...
time_t t;
struct tm* tm_info;
time(&t);
tm_info = localtime(&t);
strftime(shellcode, 5, "%Y", tm_info); //populate shellcode with year.
printf("%s\n", shellcode); //write current year to stdout
Как я уже упоминал в комментариях, я не уверен, что вы делаете в основной функции, но если вы намеревались получить целочисленную версию текущего года, вы можете последовательно объединить строковые результаты strftime с функцией strtol для преобразования строки в числовое значение:
char *temp = null;
long int year = strtol(shellcode, &temp, 0);
Но обязательно проверьте ошибки конвертации. например:
if(temp == shellcode|| ((year == LONG_MIN || year == LONG_MAX) && errno == ERANGE))
{
//handle error
}