From d572d8f051bc1e596cb3154b17a2eed4a8e8c95a Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sat, 7 Jan 2023 15:47:46 -0500 Subject: [PATCH] avoid sprintf() through C++ features and libfmt --- src/read_data.cpp | 8 ++++---- src/read_data.h | 2 +- src/variable.cpp | 17 +++++------------ 3 files changed, 10 insertions(+), 17 deletions(-) diff --git a/src/read_data.cpp b/src/read_data.cpp index 85f5accc4b..414e9ff4a2 100644 --- a/src/read_data.cpp +++ b/src/read_data.cpp @@ -2437,13 +2437,13 @@ void ReadData::parse_coeffs(char *line, const char *addstr, int dupflag, int nof if (noffset) { int value = utils::inumeric(FLERR, coeffarg[0], false, lmp); if (labelmode) value = ilabel[value - 1]; - sprintf(argoffset1, "%d", value + offset); - coeffarg[0] = argoffset1; + argoffset1 = std::to_string(value + offset); + coeffarg[0] = (char *)argoffset1.c_str(); if (noffset == 2) { value = utils::inumeric(FLERR, coeffarg[1], false, lmp); if (labelmode) value = ilabel[value - 1]; - sprintf(argoffset2, "%d", value + offset); - coeffarg[1] = argoffset2; + argoffset2 = std::to_string(value + offset); + coeffarg[1] = (char *)argoffset2.c_str(); } } } diff --git a/src/read_data.h b/src/read_data.h index c630c027bc..e97f225997 100644 --- a/src/read_data.h +++ b/src/read_data.h @@ -37,7 +37,7 @@ class ReadData : public Command { FILE *fp; char **coeffarg; int ncoeffarg, maxcoeffarg; - char argoffset1[8], argoffset2[8]; + std::string argoffset1, argoffset2; bigint id_offset, mol_offset; diff --git a/src/variable.cpp b/src/variable.cpp index c07e62648b..65a1f7d885 100644 --- a/src/variable.cpp +++ b/src/variable.cpp @@ -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) {