int main(int argc, char* argv[])
{
char *str,*buf;
int pos,i,length,offset;
offset=0;
printf("Enter string->");
str=new char [50];
buf=(char*)calloc(50,sizeof(char));
gets(str);
str[50]='\0';
buf[50]='\0';
length=strlen(str);
printf("\nlength string->%d",length);
if(length>49)
{ printf("\nERROR!");
return 0;
}
else
{ for (i=0;i<length;i++)
{ if ((str[i]==' ')&&(str[i+1]==' '))
{ offset=length-(i+1);
printf("\noffset->%d",offset);
strncpy(buf,str,offset);
}
offset=0;
}
printf("\n%s",str);
printf("\n\n%s",buf);
}
(void)getch();
return 0;
}
Подскажите почему программа работает не верно. И подскажите как исправить.
Программисты, отзовитесь, ответьте на мой вопрос!!!
shplint, что-то не соображу, что эта программа должна делать - удалять пробелы из строк (т.е. чтобы они оставались по одному)? Если да, то ты в
Вот есть строка, состоящая из слов и если какие-то слова разделены двумя пробелами программа должна удалить лишний пробел. А в буфер я вроде все прально копирую строку str со смещением, т.е. без второго пробелма оставляя только первый пробел.
shplint, вообще-то, даже в Википедии о строковых функциях пишут: http://ru.wikipedia.org/wiki/Strncpy. По этому описанию понятно, что третий параметр у тебя - не смещение, а максимальная длина копируемой строки.
Тьфу ты, ну да я копирую в буфер число символов без лишнего пробела, вроде так ну или по крайне мере так задумал. Короч, че мне надо сделать чтобы прога работала корректно?
Хорошо, немного поправим этот if, в котором все крутится:
Пасибо большое
Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)