Задача: Вводиться послідовність N слів. Утворити рядок із :
o всіх введених слів, слова у створюваному тексті розділити пропусками(чи комами);
o слів, що мають однакові першу і останню букви;
o всіх слів, відкидаючи першу та останню букви слів.
Використати бібліотечні функції strcat(), strncat().
Реалізувала так:
▼Прихований текст
#include <iostream>
#include <cstring>
using namespace std;
void concatAllWords(char *word, char *rezult)
{
strcat(word, " ");
strcat(rezult, word);
}
void concatWordsWithoutLetters(char *word, char *rezult)
{
int length_copy = strlen(word) - 3;
strncat(rezult, word + 1, length_copy);
strcat(rezult, " ");
}
void concatWordsWithSameLetters(char *word, char *rezult)
{
if (word[0] == word[strlen(word) - 2])
{
strcat(rezult, word);
strcat(rezult, " ");
}
}
int main()
{
const int TEMP_LENGTH = 20, STRING_LENGTH = 256;
int number_words;
cout << "Enter number of words: ";
cin >> number_words;
char temp_word[TEMP_LENGTH] = "\0";
char all_words[STRING_LENGTH] = "\0";
char words_without_first_last_letters[STRING_LENGTH] = "\0";
char words_with_same_first_last_letters[STRING_LENGTH] = "\0";
while (number_words)
{
cout << "Enter word: ";
cin >> temp_word;
concatAllWords(temp_word, all_words);
concatWordsWithoutLetters(temp_word, words_without_first_last_letters);
concatWordsWithSameLetters(temp_word, words_with_same_first_last_letters);
--number_words;
}
cout << "\nString with all input words: \n\t" << all_words << "\n";
cout << "\nString without first and last letters in each word: \n\t" << words_without_first_last_letters <<"\n";
cout << "\nString with same first and last letters in each word: \n\t" << words_with_same_first_last_letters << "\n";
return 0;
}
Але проблема в тому, що коли всі етапи задачі реалізовані лише в main(), то програма працює і я можу без проблем використовувати функцію strcat_s. Проте, коли хочу структурувати програму, розбити на функції, то, при використанні strcat_s, видає помилку:
▼Прихований текст
IntelliSense: no instance of overloaded function "strcat_s" matches the argument list
argument types are: (char *, const char [2])
відповідно, у коді strcat_s замінюю на strcat і у відповідь знову ж таки помилка:
▼Прихований текст
Error 1 error C4996: 'strcat': This function or variable may be unsafe. Consider using strcat_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS.
Можливо, це пов'язано з тим, що я рядки передаю через вказівники, не знаю. Допоможіть, будь ласка, розібратись.