Вывод на консоль лишних символов - C (СИ)
Формулировка задачи:
Задание: вывести все символы до 1-го двоеточия включительно
Проблема в том, что если в веденных символах нет ":"-двоеточия, то вместе с результатом выводятся непонятные лишние символы. Я поняла, что что похоже ошибка в заполнении последнего элемента, но не знаю как исправить
int i, n, flag = 0;
printf("\nPlease,enter n: ");
scanf("%d", &n);
char temp;
printf("Please,enter string\n");
for (i = 1; i < n-1; i++)
{
if((temp=getche()) == ':' && flag == 0)
{
a[i]=temp;
a[i+1] = '\0';
flag = 1;
}
else if(temp != ':' && flag == 0) a[i]=temp;
}
}
printf("\n\nResult: %s", a);
Решение задачи: «Вывод на консоль лишних символов»
textual
Листинг программы
#include <stdio.h> #include <stdlib.h> #define N 255 FILE *in,*out; int main() { system("cls"); int filein, fileout; char filename1[60],filename2[60]; ////INPUT printf("SET IN FILE [input.txt]:"); gets(filename1); if (filename1[0]=='\0') { in=fopen("input.txt","r"); } else { in=fopen(filename1, "r"); } ////OUTPUT printf("SET OUT FILE [output.txt]:"); gets(filename2); if (filename2[0]=='\0') { out=fopen("output.txt","w+"); } else { out=fopen(filename2, "w+"); } ////PROGRAM printf("\nTAKING DATA:\n[1] FROM FILE\n[ANYNUM] FROM CONSOLE\n..."); scanf("%d",&filein); printf("\nPUTING DATA:\n[1] FROM FILE\n[ANYNUM] FROM CONSOLE\n..."); scanf("%d",&fileout); //////FILEWORK int c; char s[N]; int i = 0;; if (filein==1) { while ((c = fgetc(in)) != EOF) { if (c == ':') { s[i] = '\0'; break; } else { s[i] = c; i++; } } s[i] = '\0'; } else { while ((c = getchar()) != '\n' && i < N-1) { if (c == ':') { s[i] = '\0'; break; } else { s[i] = c; i++; } } s[i] = '\0'; } if (filein==1) { fprintf(out, "%s\n", s); } else { printf("%s\n", s);} ///////////////////////////////////////// int dif; printf("\n[1] ONCE MORE\n"); scanf("%d",&dif); getchar(); if (dif==1) main(); return 0; }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д