Вывести слова в кавычках - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Здравствуйте, как вывести слова в кавычках на С? у меня, почему-то, этот код не работает:
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
 
int main(void)
{
    char str[80], k[2];
    k[0] = """;
    char *Ptr;
    int n= 0;
    puts("Vvedit slova: ");
    gets(str);
 
    while ((Ptr = strtok(NULL, ",")) != NULL)
    {
        if (Ptr[0] == k[0])
            n++;
    }
    printf( "Sliv s kavuchami: %i ", n);
    return 0;
}

Решение задачи: «Вывести слова в кавычках»

textual
Листинг программы
#include <stdio.h> 
#define DETECT  0
#define FILL    1
 
void out_words_quote(FILE* _out, FILE* _in, int q){
        char s[128];
        int  c, i = 0, m = 0;
        while(((c = fgetc(_in)) != EOF) && !ferror(_in)){
                if((c == '\n') || (c == '\r'))
                        break;
                        
                if(m == DETECT){
                        if(c == q){
                                m = FILL;
                                i = 0;
                        }
                } else if(m == FILL){
                        if(c == q){
                                m    = DETECT;
                                s[i] = '\0';
                                fprintf(_out, "%s\n", s);
                        } else if(i < 127)
                                s[i++] = (char)c;
                }
        } 
}
 
int main(void){
        out_words_quote(stdout, stdin, '"');
        return 0;
}

Объяснение кода листинга программы

В этом коде выполняется задача по выводу слов в кавычках.

  1. В первой строке подключается стандартная библиотека для работы с файлами и вывода данных.
  2. Далее, с помощью препроцессорных директив #define, определяются две константы: DETECT и FILL, которые будут использоваться в коде для определения режимов работы программы.
  3. Создается функция out_words_quote, которая принимает три аргумента: файловый дескриптор для вывода данных, файловый дескриптор для чтения данных и флаг, определяющий, должны ли слова быть выведены в кавычках.
  4. Внутри функции создается массив s, который будет использоваться для хранения строки, а также две переменные c, i и m, которые используются для контроля за процессом чтения и записи данных.
  5. В цикле while считываются данные из файла, при условии, что файл не пуст и нет ошибок при чтении.
  6. Внутри цикла проверяется, является ли текущий символ символом новой строки или символом возврата каретки. Если это так, то цикл прерывается.
  7. Далее, проверяется, находится ли переменная m в режиме DETECT. Если это так, то проверяется, равен ли текущий символ символу кавычки. Если это так, то переменная m переводится в режим FILL, переменная i сбрасывается в ноль и текущая строка выводится на экран.
  8. Если переменная m находится в режиме FILL, то проверяется, равен ли текущий символ символу кавычки. Если это так, то переменная m переводится в режим DETECT, текущий символ добавляется в строку s и переменная i увеличивается на единицу.
  9. Если текущий символ не является символом кавычки, то он добавляется в строку s, а переменная i увеличивается на единицу.
  10. В конце функции, после завершения цикла, возвращается ноль, что означает успешное выполнение функции.
  11. В функции main вызывается функция out_words_quote, передавая ей в качестве аргументов файловый дескриптор stdout (для вывода данных на экран), файловый дескриптор stdin (для чтения данных с экрана) и символ '`' (для вывода слов в кавычках).
  12. В конце функции main возвращается ноль, что означает успешное выполнение программы.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 4.143 из 5
Похожие ответы