Ошибка ввода 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); }
Объяснение кода листинга программы
- В начале программы подключаются необходимые библиотеки.
- В функции main() объявляются переменные: — n - переменная для хранения количества символов, которые нужно вывести на экран; — len - переменная для хранения длины строки, введенной пользователем; — offset - переменная для хранения индекса, с которого в данный момент выводится строка; — buf - массив символов, в который считывается строка, введенная пользователем.
- Выводится предложение с просьбой ввести строку.
- С помощью fflush() очищается буфер вывода, чтобы введенное предложение не осталось в буфере и не было выведено на экран при следующем выводе.
- С помощью fgets() вводится строка.
- С помощью scanf() считывается количество символов, которые нужно вывести на экран.
- Проверяется длина введенной строки. Если она не равна нулю и последний символ строки — символ новой строки (\n), то он заменяется на символ конца строки (\0).
- Выводится предложение с указанием количества символов, которые будут выведены на экран.
- С помощью цикла for выводится введенная пользователем строка, разбитая на подстроки указанного размера.
- После каждой подстроки выводится символ новой строки ('!'), если следующая подстрока не является последней.
- После вывода всех подстрок выводится символ новой строки ('\n').
- Программа завершается с помощью функции exit().
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д