Вывод на консоль лишних символов - 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);

Код к задаче: «Вывод на консоль лишних символов - C (СИ)»

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;
}

14   голосов, оценка 3.857 из 5


СОХРАНИТЬ ССЫЛКУ