Требуется, чтобы мой массив символов находился в структуре, но он сбой.Сканирование массива символов и его правильное размещение в C++
Как я понял после, также возникает проблема при сканировании массива.
Вводная строка состоит из двух слов, имени и фамилии, разделенных пробелом. Я еще не написал часть, где он сканирует второе слово, поэтому теперь он сканирует только первый.
Контрольные строки в коде имеют странный выход. Я ввожу «Джеймс», и он дает мне «J8224a8224m8224e8224s8224», а затем падает.
#include <iostream>
#include<string.h>
using namespace std;
struct base
{
char* name;
char* surname;
int point1;
int point2;
};
main()
{
setlocale(LC_ALL, "rus");
int n;
cin >> n;
base a[n];
char symb;
char sym[20];
int j = 0;
for (int i = 0; i < n; i++)
{
do
{
symb = getchar();
sym[j] = symb;
j++;
} while (symb != ' ');
for (int k = 0; k < j; k++) //check
cout << sym[k] << ' '; //check
strcpy(sym, a[i].name);
j = 0;
}
}
'STRCPY (Sym, а [я] .name);' Вы копирования символов в памяти, пока не существует! Вероятно, есть еще одна проблема, основанная на выводе. –
У вас есть указатели в структуре, но вы не указываете их нигде. Кроме того, технически ваша программа не является допустимой программой на C++, потому что C++ не имеет [массивы переменной длины] (https://en.wikipedia.org/wiki/Variable-length_array). Это расширение в некоторых компиляторах, избегайте их. –
'base a [n]' is gcc extension, 'cout << sym [k] << ''' использует два пробела, поэтому это многосимвольный символ – xinaiz