массив символов в c не работает с Visual Studio 2015 - PullRequest
0 голосов
/ 29 мая 2019
  1. Это единственный способ подобрать строку? Вы не можете взять символ за символом в массив?
  2. Я получаю ошибку при доступе к памяти. Код и ошибка прилагаются.
void main()
{
    int counA = 0, countB = 0, Na, Nc, i, index;
    printf("enter Na and Nc\n");
    scanf_s("%d%d", &Na, &Nc);
    char DNA[1000], SEQ[1000], str[1000];

    printf("enter mulekula\n");
    scanf_s("%s", str);
}

ввод:

2
3
AAA

сообщение, которое я получаю:

exception thrown...

1 Ответ

0 голосов
/ 29 мая 2019

fgets может помочь, см. Этот код

#include<stdio.h>
#include<string.h>
int main()
{
chat str[1000];

fegts(str,sizeof(str),stdin);

str[strlen(str)-1]='\0';
return 0;

}

Этот код будет принимать ввод с консоли, пока вы не нажмете ввод, но позаботьтесь о том, чтобы fgets включал символ новой строки ('\ n') с вводом, поэтому нам нужно удалить его и завершить строку нулевым символом ('\ 0 ').

Это причина для этой строки кода str[strlen(str)-1]='\0';, поэтому strlen (str) вернет длину строки, включая символ новой строки.

например:

если ввод был "fo" , поэтому он хранится в str следующим образом:

str [0] = 'f', str [1] = 'o', str [2] = '\ n' и str [3] = '\ 0'. Так что strlen (str) -1 вернет 2, поэтому str [2] будет присвоен нулевой символ '\ 0'

И, наконец, строка будет выглядеть следующим образом:

str [0] = 'f', str [1] = 'o' и str [2] = '\ 0'.

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