Как распечатать введенный символ? - PullRequest
0 голосов
/ 01 августа 2020

Привет, я новичок в программировании, мне нужна помощь в решении этой проблемы. Я хочу, чтобы я ввел какой-нибудь символ и хочу его распечатать ..

#include<stdio.h>
int main()
{
 char a[50];
 printf("Enter character...");
 scanf("%s",&a[50]);
 printf("You entered is %s",a[50]);
 return 0;
}

Из приведенного выше кода я не получаю никаких результатов Я также пытаюсь использовать l oop, но не получаю никакого результата, пожалуйста, помогите мне, какая программа является правильной, чтобы, если я введу любую строку, я напечатаю на экране?

Ответы [ 2 ]

0 голосов
/ 01 августа 2020

Цитата из комментария kaylum , «Было бы полезно использовать go через базовую c C книгу или учебное пособие, прежде чем продолжить».

Теперь о вашей проблеме, измените эти строки:

scanf("%s",&a[50]);
printf("You entered is %s",a[50]);

на

scanf("%50s", a);
printf("You entered \"%s\".\n", a);

Если вы просто хотите распечатать то, что введено пользователем, вы можете использовать буфер :

#include <stdio.h>
int main(void)
{
  char c;
  printf("Enter the string(~ to exit)\n");
  while((c = getchar()) != '~')
   putchar(c);
  return 0;
}

Вывод:

Enter the string(~ to exit)
This is a test program // press enter
This is a test program // same output
~ // exit
0 голосов
/ 01 августа 2020

Итак, вот ваша проблема.

Вы определяете массив типа char длиной 50. Затем вы читаете из стандартного ввода строку и сохраняете ее по адресу 50-го элемента. Итак, что произойдет, если вы сохраните строку «вне пределов», и вы можете получить ошибку sh, а может и нет.

В любом случае происходит что-то очень плохое. Вы записываете данные в область памяти, которой быть не должно.

Итак, вы хотите записать эти данные по адресу 0-го индекса массива.

Вы делаете это с помощью &a[0] или, для простоты: a. Оба означают одно и то же.

В конце концов, вы хотите следующее:

#include<stdio.h>
int main()
{
 char a[50];
 printf("Enter character...");
 scanf("%s",a);
 printf("You entered is %s",a);
 return 0;
}

Я понимаю, что вы новичок и изучаете основные c концепции, но имейте в виду, что этот код очень небезопасен. Потому что, если кто-то наберет длину символов более 50, вы снова окажетесь в той же лодке, что и раньше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...