У меня возникла ситуация, когда я отправлял задания, которые выполнялись в течение пяти дней, но из-за ошибки во всей работе можно было потерять. Я сделал «системный» вызов для сжатия файла данных, а затем удалил исходный несжатый файл размером до 4G. Так что у меня есть это в коде CСценарий для изменения поведения запущенной программы C
strcpy(command,"data"); ////I should added a forward slash here "data/"
sprintf(command,"%scompress -c -i %s -o %s",command,name,out_name);
system(command);
remove(name); /////This is the problem
Это ошибка в Sprintf линии, в которой то, что я хотел сделать, чтобы вызвать программу в данных/сжатия, но в связи с отсутствием «/» системы команда не работает. И, таким образом, полученные данные не сжимаются, а затем сразу же исходный файл DELETED не оставляет мне ничего! Если бы он был сжат, все было бы в порядке.
В настоящее время существует пять рабочих заданий в таком состоянии. Мне нужно каким-то образом отвлечь это поведение, чтобы я не потерял пять дней работы. Я думаю, чтобы создать поддельный скрипт с именем «datacompress» в текущем каталоге, чтобы изменить поведение запущенной программы. Могу ли я это сделать или есть лучшие варианты, если вообще?
Два совета: не используйте тот же буфер, что и источник и пункт назначения в 'sprintf', вы не знаете, в каком порядке функция будет писать в ваш буфер. Во-вторых, вместо этого следует использовать 'snprintf', чтобы избежать возможных переполнений буфера. –
Еще один совет - обновите свое резюме! –
Я думаю, что это может быть мое плохое использование sprintf, которое вызвало проблему. Несмотря на то, что я написал strcpy с «данными», чтобы продемонстрировать отсутствующую косую черту, я фактически инициализировал ее «data /», но как-то слэш потерялся ... – danny