При выводе строки на экран появляется не нужный перенос строки - C (СИ)

  1. Дорогие знатоки, проблема следующая: при выводе строки на экран появляется символ переноса строки появление которого моему уму не постижимо (в программировании слабоват). Надеюсь на вашу помощь) Собственно проблема на скрине.C1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 #include <stdio.h> #include <conio.h> #include <windows.h> #include <iostream> #include <string.h>   #define N 3   char predmet1[20]; char predmet2[20]; char predmet3[20];   char shif_stud[] = "Шифр студента"; char shif_grup[] = "Шифр группы"; char FIO[] = "Ф.И.О. студента"; char sred[] = "Средний балл";   float alg_1(float a, float b, float c) //Вычесление среднего балла студента {     float res = (a + b + c)/3;     return res; }   struct student {       int shif_stud; //Шифр студента     char FIO[20];     int shif_grup; //Шифр Группы     float ocenka1;     float ocenka2;     float ocenka3;     float sred; //Средний балл студента } stud[N];   int main(void) {     SetConsoleCP(1251);     SetConsoleOutputCP(1251);     setlocale(LC_ALL, "rus");     int i, vibor1, vibor2;     printf("Пожалуйста, введите дисциплины обучения студентов (предметы):\n");     printf("Введите название 1 - ого предмета (до 20-ти знаков):");     gets (predmet1);     printf("Введите название 2 - ого предмета (до 20-ти знаков):");     gets (predmet2);     printf("Введите название 3 - ого предмета (до 20-ти знаков):");     gets (predmet3);     printf("Как вы хотите получить информацию о студентах?\n");     printf("1. - Из файла\n");     printf("2. - Вручную\n");     scanf("%d", &vibor1);     FILE *fp;     switch (vibor1)     {         case 1:         fp = fopen("K16-1.txt", "r");         if((fp = fopen("K16-1.txt", "r")) == NULL)         {             printf("ОШИБКА! Файла не существует!\n");             printf("Пожалуйста, введите информацию:\n");         }         else         {             for(i = 0; i < N; i++)             {             fgets(stud[i].FIO, 19, fp);             fscanf(fp, "%d\n", &stud[i].shif_stud);             fscanf(fp, "%d\n", &stud[i].shif_grup);             fscanf(fp, "%f\n", &stud[i].ocenka1);             fscanf(fp, "%f\n", &stud[i].ocenka2);             fscanf(fp, "%f\n", &stud[i].ocenka3);             fscanf(fp, "%f\n", &stud[i].sred);             }         fclose(fp);         break;          }     case 2:         fp = fopen("K16-1.txt", "w");         for (i = 1; i < N; i++)         {             printf("Введите Ф.И.О. %d-го студента (до 20-ти знаков):\n", i);             fflush(stdin);             fgets(stud[i].FIO, 20, stdin);             fputs(stud[i].FIO, fp);             printf("Введите шифр %d-го студента (6 знаков):\n", i);             scanf("%d", &stud[i].shif_stud);             fprintf(fp, "%d\n", stud[i].shif_stud);             printf("Введите шифр группы %d-го студента (6 знаков):", i);             scanf("%d", &stud[i].shif_grup);             fprintf(fp, "%d\n", stud[i].shif_grup);             printf("Введите оценку студента по дисциплине %s (1 знак):", predmet1);             scanf("%f", &stud[i].ocenka1);             fprintf(fp, "%f\n", stud[i].ocenka1);             printf("Введите оценку студента по дисциплине %s (1 знак):", predmet2);             scanf("%f", &stud[i].ocenka2);             fprintf(fp, "%f\n", stud[i].ocenka2);             printf("Введите оценку студента по дисциплине %s (1 знак):", predmet3);             scanf("%f", &stud[i].ocenka3);             fprintf(fp, "%f\n", stud[i].ocenka3);             stud[i].sred = alg_1(stud[i].ocenka1, stud[i].ocenka2, stud[i].ocenka3);             fprintf(fp, "%f\n", stud[i].sred);         }         fclose(fp);         break;     }       system("cls");     while (vibor2 != 4)     {         printf("_____________________________________________________________________________________________\n");         printf("                        |-----------Меню----------|                                 \n");         printf("                                                                    \n");         printf("                    |  Выберите пожалуйста действие  |                          \n");         printf("                                                                    \n");         printf("            1. - Вывести список студентов, получающих степендию         \n");         printf("            2. - Список студентов, умеющих неудовлетворительные оценки  \n");         printf("            3. - Вывод оценок студента по всем дисциплинам              \n");         printf("            4. - Выход                                                  \n");         printf("_____________________________________________________________________________________________\n");         scanf("%d", &vibor2);         system("cls");         switch (vibor2)         {             case 1:                 printf("%-20s%-20s%-20s%-20s\n", shif_stud, shif_grup, FIO, sred);                 for (i = 0; i < N; i++)                 {                     if (stud[i].sred >= 4)                     {                         printf("%-20d%-20d%-20s%-20f\n", stud[i].shif_stud, stud[i].shif_grup, stud[i].FIO, stud[i].sred);                     }                 }                 getch();                 system("cls");                 break;             case 2:                 printf("%-20s%-20s%-20s%-20s\n", shif_stud, shif_grup, FIO, sred);                 for (i = 0; i < N; i++)                 {                     if (stud[i].sred < 3)                     {                         printf("%-21d%-20d%-20s%-20f\n", stud[i].shif_stud, stud[i].shif_grup, stud[i].FIO, stud[i].sred);                     }                 }                 getch();                 system("cls");                 break;             case 3:                 printf("%-20s%-20s%-20s%-20s%-20s%-20s\n", FIO, shif_grup, shif_stud, predmet1, predmet2, predmet3);                 for (i = 0; i < N; i++)                 {                     printf("%-20s", stud[i].FIO);                     printf("%-20d%-20d%-20f%-20f%-20f\n", stud[i].shif_grup, stud[i].shif_stud, stud[i].ocenka1, stud[i].ocenka2, stud[i].ocenka3);                 }                 getch();                 system("cls");                 break;             case 4:                 printf("До свидания!");                 getch();                 break;             default:                 printf("Неверное действие! Повторите ввод.");                 getch();                 system("cls");                 break;         }     } }


textual

Код к задаче: «При выводе строки на экран появляется не нужный перенос строки - C (СИ)»

попробуйте так:
fgets(stud[i].FIO, 20, stdin);
for(int j = 0; stud[i].FIO[j]; j++)
    if(stud[i].FIO[j] == '\n')
        stud[i].FIO[j] = '\0';

СДЕЛАЙТЕ РЕПОСТ

8   голосов, оценка 4.625 из 5



Похожие ответы
  1. В записке слова зашифрованы — каждое из них записано наоборот. Расшифровать сообщение

  1. Помогите составить программу. Задание: создать программу, с помощью которой можно будет задавать строку символов с консоли и которая будет удалять имеющие нечетный номер символы. Что-то типо этого: C1 2 3 4 5 6 7 8 9 10 11 #include #include   Функция() {     Нахождение нечетных символов и их удаление } int main() {     Задание строки из символов }

  1. Нужна помощь. Нужно написать код для сортировки строк, с клавиатуры вводится наименование города и популяция. Задача отсортировать в алфавитном порядке города. Вот сам код в СИ.C1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 #include #include #include "struct.h"     void inputTown(struct town*pt); void printTown(struct town*pt); void sortTown(struct town*pt);   int main(int argc, char**argv) {     struct town Towns[10];       for(int i = 0; i < 10; i++){         inputTown(&Towns[i]);     }         sortTown(&Towns);         for(int i = 0; i < 10; i++){         printTown(&Towns[i]);     }       getchar();     return 0; }   void inputTown(struct town*pt) {     printf("Input netx town.\n");     printf("Name: ");     gets_s(pt->name, NAMELENGHT);       printf("Population: ");     scanf_s("%d", &pt->population);     getchar();     return; }   void printTown(struct town*pt) {     printf("town: %s, population:%d\n", pt->name, pt->population); }   void sortTown(struct town*pt) {     char tmp[80];     char*ptr = tmp;       for (int i = 0; i < NAMELENGHT - 1; i++)                     //сортировка выбором         for (int j = i; j < NAMELENGHT; j++) {             if (strcmp(pt[i].name, pt[j].name) > 0)             {                 *ptr = pt[i].name;//[80]                 int x = pt[i].population;                 strncpy_s(pt[i].name, NAMELENGHT, pt[j].name, strlen(pt[j].name));                 pt[i].population = pt[j].population;                 strncpy_s(pt[j].name, NAMELENGHT, ptr, strlen(ptr));                 pt[j].population = x;             }         } }собственно вроде ошибка где то в функции sortTown, либо может неверно аргумент отправляю в функцию. Подскажите где ошибка пожалуйста.

  1. Здравствуйте, Пытаюсь сделать программу которая принимает аргумент строки, но затем эту строку (массив символов) нужно перебрать посимвольно и каждый символ char преобразовать в int и вывести на печать в новой строке (или произвести с ним арифмет. действия).C1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 #include #include           int main (int argc, char* argv[])     {   if (argc!=2 && argc!=3)         {    printf("Wrong\n");               return 1;       }        char* str=argv[1];              for(int i=0;; i=i+1)       {     if(str[i]=='\0')             {               break;                          }      int x= (int)atoi(str[i]);         printf("%i\n",x) ;           }           return 0;   }Но данный код не работает, при компиляции жалуется, что в строке int x= (int)atoi(str[i]); не хватает символа & перед str[i]. Если вставить этот символ - программа компилируется, но результат выдает не тот который требуется. С этим символом результат таков: вводим 123; вывод 123 23 3 А необходимо вывод: 1 2 3 Подскажите, пожалуйста в чем ошибка и как грамотно написать алгоритм?

  1. Необходимо модифицировать данную функции, чтобы она указывала на индекс последнего вхождения слова в строке. То есть, если строка - Cyber Forum is Cyber Forum, а искомое слова Cyber, то она не должна выдавать 0.C1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 int searchWord(const char str[81], const char word[21]) /* Входные данные: str – исходная строка word – искомое  слово   Выходные данные: возвращаемое значение - индекс первого вхождения искомого слова в строку; возвращает -1, если слово не найдено */ {     int i = 0;     while (str)     {           const char* s1 = str;         const char* p1 = word;           while (*s1 == *p1)         {               s1++; p1++;             if (*p1 == '\0' || *s1 == '\0')break;           }         if (*p1 == '\0') return i;         if (*s1 == '\0') return -1;         str++;         i++;     }     return -1; }

  1. Дело в том что я ввожу n-ое число строк типа: фамилия дата рождения город и программа должна вывести фамилию возраст город.Вопрос в том что как разбить строку что бы дату возраст можно было посчитать! В одной строке все задаем например (Иванов 1988 Иваново).C1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 #define M 30 #define N 100 int main() { char s[N],s2[N],dtm[N]; char array[M][N],n; int x; for (n=0; n < M && s[0] != '\n'; ++n) {     fgets(s, M, stdin);     strcpy_s(dtm, s);     sscanf_s(dtm,"%100s %d %100s", s2, &x, s2);     strcpy_s(array[n], dtm); } for (int i = 0; i < n; i++) {     printf("%s",array[i]); } getchar();   return 0; }После ввода строки получаю прекращение работы программы(

  1. Не успеваю сделать такое задание для шараги, если кто может помочь хотя бы советом или напутствием, как нужно делать или где почитать про это, или каким-то примером кода ,ибо даже не понимаю , что должно из этого получиться. спасибо.

  1. Дан текстовый файл. Напечатать все его строки, содержащие в качестве фрагмента заданный текст

  1. 2.Дан текстовый файл. Напечатать все строки, длина которых меньше заданного числа. Помогите, пожалуйста