Top.Mail.Ru
Ответы
Аватар пользователя
10лет
Изменено
Аватар пользователя
Аватар пользователя
Аватар пользователя
Программирование
+2

Программирование на языке "C"

Написал программу на языке си, котрая печатает самую длиную строку без каких либо ограничений на размер. Вот, собственно, и она:

#include <stdio.h>

#define MAXLINE 10 // максимальный размер вводимой строки

int getlin(char line[], int MAX);

void copy(char to[], char from[]);

/*печать самой длинной строки*/

int main()

{

int len; //длина текущей строки

int max; //длина максимальной из просмотренных строк

char line[MAXLINE]; //текущая строка

char longest[MAXLINE]; //самая длинная строка

int c;

max=0;

while((len=getlin(line, MAXLINE))>0)

{

if(line[len-1] != '\n')

while((c=getchar())!=EOF && c!='\n')

len++;

if(len>max)

{

max=len;

copy(longest, line);

}

}

if(max<MAXLINE) // вычитаем нулевой символ вставленный в getlin

max--;

if(max>0)

{

printf("Самая длинная строка\n");

if(max>MAXLINE)

printf("%s...\n", longest);

else

printf("%s\n", longest);

}

printf("длинa строки - %d символов\n", max);

return 0;

}

/*getlin читает строку в s, возвращает длину*/

int getlin(char s[], int lim)

{

int c, i;

for(i=0; i<lim-1 && (c=getchar()) != EOF && c!='\n'; i++)

s[i]=c;

if(c=='\n')

{

s[i]=c;

i++;

}

s[i] = '\0';

return i;

}

void copy(char to[], char from[])

{

int i;

i=0;

while((to[i] = from[i]) != '\0')

i++;

}

НО! Когда ее откомпилировал, и запускаю, и пишу туда, собственно, символы, ничего не проиходит. То есть не идет подчет и вывод, то бишь, "Самая длинная сторока" и "Длина строки". Что я сделал не то?
Вроде код правильный.

По дате
По рейтингу
Аватар пользователя
Новичок
10лет

#include <stdio.h>
#define BUFFER 256
int length(char*);
char* max_string(char*);
void copy(char*, char*);
int main(void) {
int n = 2;
char mx_str[BUFFER];
do {
char str[BUFFER];
char* tmp;
printf("String: ");
gets_s(str, BUFFER);
tmp = max_string(str);
if (tmp) copy(mx_str, tmp);
} while (--n);
printf("Longest: ");
puts(mx_str);
fflush(stdin);
getchar();
return 0;
}
int length(char* s) {
int n = 0;
while (s[n]) ++n;
return n;
}
char* max_string(char* s) {
static max_len = 0;
int len = length(s);
if (len > max_len) {
max_len = len;
return s;
}
return NULL;
}
void copy(char* dest, char* src) {
int i = 0;
while (src[i]) {
dest[i] = src[i];
++i;
}
dest[i] = 0;
}