Убрать из строки все символы, кроме строчных латинских букв - C (СИ)
Формулировка задачи:
Вот текст программы. Она убирает из максимум 50 слов длиной максимум 20 символов все символы кроме строчных латинских букв. Слова разделены пробелом, за последним словом точка.
Программа отлажена и работает. Но есть один косяк. Она не читает самый первый символ. То есть, например:
input
vbdfsyuvb345678.
output
bdfsyuvb345678.
Не могу найти косяк в программе. Подскажите, пожалуйста
#include<stdio.h> #include<conio.h> #include<string.h> void main() { int a,i,b,j,n,z,v; char A[50][21],X[50][21]; printf("Enter strings:\n"); for(n=0;n<50;n++) { if(getchar()=='.') break; scanf("%[^ .]",&A[n]); } for(a=0;a<n;a++) { char word[20]; for(int q=0;q<20;q++) word[q]='\0'; char newword[20]={NULL}; for(int p=0;p<20;p++) word[p]=A[a][p]; v=0; for(b=0;b<strlen(word);b++) { if((word[b]>='a')&&(word[b]<='z')) { newword[v]=word[b]; v++; } } strcpy(X[a],newword); } printf("Result strings:\n"); for(z=0;z<n-1;z++) { printf("%s ",&X[z]); } printf("%s.",&X[z]); getch(); }
Решение задачи: «Убрать из строки все символы, кроме строчных латинских букв»
textual
Листинг программы
for(n=0;n<50;n++) { if(getchar()=='.') break; scanf("%[^ .]",&A[n]); }
Объяснение кода листинга программы
n
- это счетчик, который итерирует от 0 до 49getchar()
- это функция, которая считывает один символ из стандартного вводаscanf(
%[^ .],&A[n])
- это функция, которая считывает строку, состоящую из любых символов, кроме точки, и сохраняет ее в массивеA
A[n]
- это элемент массиваA
, в который сохраняется считанная строка
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д