программа для удаления специальных символов и цифр из строки и печати только английских букв - PullRequest
0 голосов
/ 13 сентября 2018

это то, что я пытался. это работает правильно для маленькой строки, как wel $ co * me но выдает странный вывод для pass @ word. куда я точно иду не так?

#include <stdio.h>
#include <string.h>
int main()
{
  char s[100],rs[100];
    int i,c=0;
  scanf("%s",s);
  int n = strlen(s);
  for(i=0;i<n;i++)
  {
    if(((int)s[i] >= 65 && (int)s[i] <= 90) ||((int)s[i] >=97 && (int)s[i] <= 122)  )
    {
      rs[c] = s[i];
      c++;

    }

    else
    {
      continue;

    }
  }
printf("%s",rs);
      return 0;
}

1 Ответ

0 голосов
/ 13 сентября 2018

, но выдает странный вывод для pass @ word.где я точно ошибаюсь?

printf("%s",rs); ожидает, что rs будет указателем на строку .И все же без определенного нулевого символа в данных, на которые указывает rs, результатом будет неопределенное поведение или в случае OP "странный вывод".

Aпростое решение -

rs[c] = '\0'; // add this after the loop
printf("%s",rs);

Еще одно важное решение - избежать переполнения буфера - используйте ограничение ширины.

// scanf("%s",s);
scanf("%99s",s);

У кода есть и другие недостатки, но этоключевые на данный момент.

...