In general, everything seemed to be doing fine, but at the end, when issuing the answer, the error runs-time check failure # 2 - the stack around the variable 'nazvtov' was corrupted when I get out of line and how to fix it? ..
#include <iostream> #include <stdio.h> #include <stdlib.h> #include <malloc.h> #define limtov 1 // ограничиваю количество товаров #define limst 1 // ограничиваю количество стран, импортирующих товар struct svedeniya { char nazv; char exportstr; int volume; char *import; }; void vvod(svedeniya *tovar) { int i = 0; int j = 0; for (i = 0; i < limtov; i++){ tovar[i].import = (char*)malloc(sizeof(char)); printf("\nВведите название товара №%d: ", i); scanf("%s", &tovar[i].nazv); printf("\nВведите страну, экспортирующую товар№%d: ", i); scanf("%s", &tovar[i].exportstr); printf("\nВведите общий объем товара в штуках№%d: ", i); scanf("%d", &tovar[i].volume); for (j = 0; j < limst; j++) { printf("\nВведите страну №%d, в которые импортируется товар№%d: ", j, i); scanf("%s", &tovar[i].import[j]); } } } void poisk(svedeniya *tovar) { char nazvtov; int i = 0; printf("Введите товар для поиска: "); scanf("%s", &nazvtov); for (i = 0; i < 1; i++) { if (strcmp(&nazvtov, &tovar[i].nazv) == 0){ printf("%s ", &tovar[i].nazv); printf("%s ", &tovar[i].exportstr); for (int j = 0; j < 1; j++) { printf("%s ", &tovar[i].import[j]); } } } } int main() { setlocale(LC_ALL, "Russian"); svedeniya *tovar; tovar = (svedeniya*)malloc(sizeof(svedeniya)); vvod(tovar); poisk(tovar); }