avoid sprintf() through C++ features and libfmt
This commit is contained in:
@ -266,11 +266,8 @@ void Variable::set(int narg, char **arg)
|
||||
num[nvar] = utils::inumeric(FLERR,arg[2],false,lmp);
|
||||
data[nvar] = new char*[1];
|
||||
data[nvar][0] = nullptr;
|
||||
if (narg == 4) {
|
||||
char digits[12];
|
||||
sprintf(digits,"%d",num[nvar]);
|
||||
pad[nvar] = strlen(digits);
|
||||
} else pad[nvar] = 0;
|
||||
if (narg == 4) pad[nvar] = std::to_string(num[nvar]).size();
|
||||
else pad[nvar] = 0;
|
||||
}
|
||||
|
||||
if (num[nvar] < universe->nworlds)
|
||||
@ -955,13 +952,9 @@ char *Variable::retrieve(const char *name)
|
||||
style[ivar] == SCALARFILE) {
|
||||
str = data[ivar][which[ivar]];
|
||||
} else if (style[ivar] == LOOP || style[ivar] == ULOOP) {
|
||||
char result[16];
|
||||
if (pad[ivar] == 0) sprintf(result,"%d",which[ivar]+1);
|
||||
else {
|
||||
char padstr[16];
|
||||
sprintf(padstr,"%%0%dd",pad[ivar]);
|
||||
sprintf(result,padstr,which[ivar]+1);
|
||||
}
|
||||
std::string result;
|
||||
if (pad[ivar] == 0) result = std::to_string(which[ivar]+1);
|
||||
else result = fmt::format("{:0>{}d}",which[ivar]+1, pad[ivar]);
|
||||
delete[] data[ivar][0];
|
||||
str = data[ivar][0] = utils::strdup(result);
|
||||
} else if (style[ivar] == EQUAL) {
|
||||
|
||||
Reference in New Issue
Block a user