добавить точку в строку, используя C - PullRequest
0 голосов
/ 16 сентября 2011

я хочу добавить "/."к имени файла, например,
у меня есть имя файла "abc", я хочу получить имя "abc / .abc",
как это сделать в C?strcpy ("/.", name) и strcat ("/.", name) вернули ошибку сегментации.

Спасибо

Ответы [ 2 ]

2 голосов
/ 16 сентября 2011

Первый параметр strcat должен быть модифицируемой строкой с достаточным пространством, выделенным для хранения результирующей строки и завершающего нулевого байта. Первый параметр strcpy должен указывать на выделенную, модифицируемую память с достаточным пространством для хранения полученной копии строки и завершающего нулевого байта. В обоих ваших примерах вы передали константу в качестве первого параметра.

Вот пример кода, чтобы сделать то, что вы хотите:

char* SlashDotter(const char* in)
{ // turn <string> into <string>/.<string> -- caller must free returned string
 char *out = malloc(strlen(in)*2 + 3); // two copies of input, /, ., and nul
 strcpy(out, in);
 strcat(out, "/.");
 strcat(out, in);
 return out;
}
1 голос
/ 16 сентября 2011

asprintf () может использоваться для выделения строки и заполнения ее содержимого.

в системах linux "man asprintf" даст вам описание того, как работает эта функция, в противном случае используйте Google для получения помощи из других мест.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...