Другие языки программирования и технологии

Дана строка символов. Признак конца строки "\n" (перевод строки). Строка состоит из слов, разделенных пробелами. Вывести

Помогите решить,пожалуйста, на С
// Лейсан_2011-11-29
#include <stdio.h>
#include <conio.h>

void main()
{
char str[81] = {'\0'};
char word[81] = {'\0'};
int wordCount = 1;

printf("\n Enter, please, a line.\n");
gets(str);

for (int n = 0, m = 0; str[n] != '\0'; n++, m++)
{
word[m] = str[n];

if (str[n] == ' ' && str[n - 1] == ' ')
{
m = -1;
continue;
}

if (str[n] == ' ')
{
wordCount++;
m = -1;
}

if (str[n] == 'a' && (str[n + 1] == ' ' || str[n + 1] == '\0'))
printf("\n %d. %s \n", wordCount, word);
}

getch();
}
PE
Pasha Evdokimov
98 484
Лучший ответ
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define BS 16

int main() {
char c;
char *s;
int ii = 0;
int inw = 0;
int bi;
int n = 0;
s = malloc(BS);
printf("string? ");
do {
s[ii++] = c = getchar();
if ( !(ii % BS) ) {
s = realloc(s, ii + BS);
}
} while (c != '\n');
s[ii] = 0;
s[--ii] = ' ';
for (ii = 0; ii < strlen(s); ii++) {
if ( !inw && (s[ii] != ' ') ) {
inw = 1;
++n;
bi = ii;
}
if ( inw && (s[ii] == ' ') ) {
inw = 0;
if (s[ii-1] == 'a') {
int c;
printf("w #%d: ", n);
for (c = bi; c < ii; ++c) {
putchar(s[c]);
}
puts("");
}
}
}
return 0;
}
Tema Dementyev
Tema Dementyev
93 982

Похожие вопросы