s[0] = 'S';
s[1] = 'T';
s[2] = 'R';
s[3] = 'O';
s[4] = 'K';
s[5] = 'A';
s[6] = '\n';
s[7] = '\0';
while(*s) {
putchar(*s);
s++;
}
Передача массива в функцию. В чем может біть проблема?
Почему
Код:
работает, а
Код:
void putstr(char *s)
{
while(*s) {
putchar(*s);
s++;
}
}
...
putstr("STROKA\n");
{
while(*s) {
putchar(*s);
s++;
}
}
...
putstr("STROKA\n");
не работает?
Почему сам описываю ф-ю вывода строки - не спрашивать. Так надо.
все работает, запустила и проверила. если не работает, наверно символ конца строки по умолчанию не добавляется к передаваемой строке. возможно особенности настроек/компилятора. на MSVS 6.0 все ОК.
Я проверила - у меня тоже оба варианта работают.
Во вторых - что конкретно у тебя не работает?
Код:
s[0] = 'S';
s[1] = 'T';
s[2] = 'R';
s[3] = 'O';
s[4] = 'K';
s[5] = 'A';
s[6] = '\n';
s[7] = '\0';
putstr(s);//печатает
while(*s) {
putchar(*s);//печатает
s++;
}
putstr(s);//тут уже не напечатает s = ""
s[1] = 'T';
s[2] = 'R';
s[3] = 'O';
s[4] = 'K';
s[5] = 'A';
s[6] = '\n';
s[7] = '\0';
putstr(s);//печатает
while(*s) {
putchar(*s);//печатает
s++;
}
putstr(s);//тут уже не напечатает s = ""
Наверное у автора вот это и "не работает" ?:)
Во вторых, форум вроде для программистов, а не сообщество пифий, которые должны гадать - что конкретно имел ввиду конкретный автор.
В том виде в котором он приведен, код работоспособен полностью. Если конечно автор правильно вызывает объявленную функцию. Т.е.
Код:
void putstr(char *s);
....
void putstr(char *s){
while(*s) {
putchar(*s);
s++;
}
}
int main(int argc, char* argv[])
{
putstr("STROCA \n");
return 0;
}
....
void putstr(char *s){
while(*s) {
putchar(*s);
s++;
}
}
int main(int argc, char* argv[])
{
putstr("STROCA \n");
return 0;
}
вполне нормально отработает.
Мда... Скомпилировал другим компилятором - все работает. Первым строка походу вообще не передается в функцию почему-то (как входной параметр). Это ф-я не одна такая "нерабочая" у меня. А вот возвращает строку нормально (как выходной параметр)...