Ошибка ввода scanf - C (СИ)

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

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

не воспринимает целое в переменной n scanf("Число N = %d",n);
//ГЉГ*æäûå n ñèìâîëîâ ГўГ® ââåäåГ*Г*îì ГІГҐГЄГ±ГІГҐ îòäåëèòü Г§Г*Г*êîì "!". 
#include <stdio.h>
#include <conio.h>
#include <string.h>
char  buf[1];                      // ГЎГіГґГҐГ°
int main(int argc, char *argv[])
{
    char str[255], str1[255];
    int i,j,len,n,k=1;
    size_t  sz;
    buf[0] = '\0'; 
    str1[0]= '\0';
    // èçáûòî÷Г*Г*Гї ГЁГ*èöèГ*ëèçГ*öèÿ
    printf("Stroka=");
    gets(str);
    scanf("×èñëî N = %d",n);
//  n=7;
    
    sz = strncpy(buf, str, 1);    
    // ïðèìåð îïðåäåëåГ*ГЁГї ГіГ±ГҐГ·ГҐГ*ГЁГї ñòðîêè      
    len=strlen(str);
    for(i=0;i<len;i++)
    {
    sz = strncpy(buf, str+i, 1);
    if (i==n*k)
        {
            strcat(str1, "!");
            k++;
        }
        strcat(str1, buf);
    }
 
    printf("Stroka=");
    len=strlen(str1);
    for(i=0;i<len;i++)
    {
        //Âûâîä ñëîâГ*
        printf("%c",str1[i]);   
    }
    printf("\nStroka=%s",str1); 
    getch();
    }

Решение задачи: «Ошибка ввода scanf»

textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
int main(int argc, char *argv[])
{
    size_t n, len, offset;
    char buf[BUFSIZ];
 
    printf("Please enter a sentence: ");
    fflush(stdout);
    fgets(buf, BUFSIZ, stdin);
    
    printf("Enter group size: ");
    fflush(stdout);
    scanf("%zd", &n);
 
    len = strlen(buf);
 
    if(len != 0 && buf[len - 1] == '\n')
        buf[len - 1] = '\0';
    
    printf("Sentence with each %zd char(s) separated with `!':\n", n);
    
    for(offset = 0; offset < len; offset += n)
    {
        printf("%.*s", n, buf + offset);
 
        if(offset + n < len)
            putchar('!');
    }
    
    putchar('\n');
    
    exit(0);
}

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

  1. В начале программы подключаются необходимые библиотеки.
  2. В функции main() объявляются переменные: — n - переменная для хранения количества символов, которые нужно вывести на экран; — len - переменная для хранения длины строки, введенной пользователем; — offset - переменная для хранения индекса, с которого в данный момент выводится строка; — buf - массив символов, в который считывается строка, введенная пользователем.
  3. Выводится предложение с просьбой ввести строку.
  4. С помощью fflush() очищается буфер вывода, чтобы введенное предложение не осталось в буфере и не было выведено на экран при следующем выводе.
  5. С помощью fgets() вводится строка.
  6. С помощью scanf() считывается количество символов, которые нужно вывести на экран.
  7. Проверяется длина введенной строки. Если она не равна нулю и последний символ строки — символ новой строки (\n), то он заменяется на символ конца строки (\0).
  8. Выводится предложение с указанием количества символов, которые будут выведены на экран.
  9. С помощью цикла for выводится введенная пользователем строка, разбитая на подстроки указанного размера.
  10. После каждой подстроки выводится символ новой строки ('!'), если следующая подстрока не является последней.
  11. После вывода всех подстрок выводится символ новой строки ('\n').
  12. Программа завершается с помощью функции exit().

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


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

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

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