Вы ищете sprintf
семейства функций. Их общий формат:
char output[80];
sprintf(output, "No record with name %s found\n", inputString);
Однако sprintf
само по себе является чрезвычайно опасно. Он подвержен тому, что называется переполнением буфера. Что это означает, что sprintf не имеет представления о том, насколько велика строка output
, которую вы предоставляете, так что она будет охотно писать больше данных, чем доступно. Например, это будет компилировать чисто, но перезаписать действительную память — и нет никакого способа, чтобы sprintf
знать, что он ничего плохого делать:
char output[10];
sprintf(output, "%s", "This string is too long");
Решение состоит в том, чтобы использовать функцию в качестве snprintf
, которая принимает длину параметр:
char output[10];
snprintf(output, sizeof output, "%s", "This string is too long, but will be truncated");
или, если вы находитесь на системе Windows, чтобы использовать _sntprintf
варианты и друзей, которые защищают от перетекания либо входных и выходных строк.
Сделайте себе одолжение и пойти купить «Язык программирования C» по Kernigham & Ritchie. – Pete
Спасибо, Пит, я буду. – itsaboutcode
http://www.eskimo.com/~scs/cclass/cclass.html –