Для стартеров в соответствии со стандартом C функция main без параметров должна быть объявлена как
int main( void )
Это объявление
char str[0] = {};
недопустимо в двух отношениях. Размер массива должен быть больше нуля. И фигурные скобки, которые инициализируют массив, не должны быть пустыми.
Фактически массив является избыточным, потому что вы пытаетесь просто выводить введенные символы.
Это назначение
c = str[i];
не имеет смысла, даже если массив был объявлен правильно, поскольку введенный символ перезаписывается (не существует) элементом массива.
Сама переменная c
должна иметь введите int
.
Если вам просто нужно выполнить это
Я пытаюсь создать простую программу, которая будет читать строку и печатать ее вместе с количеством символов
, тогда программа может выглядеть, например, следующим образом:
#include <stdio.h>
int main(void)
{
size_t i = 0;
for ( int c = getchar(); c != EOF && c != '\n' && c != '@'; c = getchar() )
{
++i;
printf( "%c %zu ", c, i );
}
putchar( '\n' );
return 0;
}
Если ввести
abcdef
, тогда вывод будет
a 1 b 2 c 3 d 4 e 5 f 6
Если вы хотите использовать массив символов и сохранить введенные символы в массиве, программа может выглядеть следующим образом:
#include <stdio.h>
int main(void)
{
enum { N = 100 };
char s[N];
int c;
for ( size_t i = 0; i < N && ( c = getchar( ) ) != EOF && c != '\n' && c != '@'; i++ )
{
s[i] = c;
printf( "%c %zu ", s[i], i + 1 );
}
putchar( '\n' );
return 0;
}
Вывод программы будет таким же, как указано выше, если вводить для пример abcdef
.