LINUX.ORG.RU

Изменение значения переменной в цикле for


0

0

Посмотрите на код ниже: я передаю проге в качестве параметра 12,34,56 и переменную k меняю только при встрече с запятой, но она почему-то меняется с каждым циклом, т.е. по идее результат выполнения должен быть 0\n0\nchange\n1\n1 и т.д., но получилось 0\n1\n0\n1\nchange и т.д. Как это исправить?

#include <stdio.h>

int main(int argc,char *argv[])
{
    int i,j,k=0;
    char c1[1000],c2[1000],*str=argv[1];

    for(i=0,j=0;i<strlen(str);i++)
	if(isdigit((int)str[i]))
	    switch(k){
	    case 0:printf("0\n");
	    case 1:printf("1\n");
	    }
	else if(str[i]==','){
	    printf("change\n");
	    k=1;
	}

    return;
}
anonymous

советую почитать Кернигана и Ритчи чтобы больше такие тупые вопросы не задавать.

после "case 0:printf("0\n");" надо поставить "break;"

Reset ★★★★★
()

> return;

да ещё и возвращаешь ты не пойми чего. return 0; ставь в конце ну или return <код ошибки>; код ошибки естественно дб отличено от 0.

Reset ★★★★★
()

За такой код тебе нужно руки повыдергивать из того места, которым ты думаешь...

anonymous
()
Ответ на: комментарий от drish

> return; и так возвратит 0.

Кто тебе такое рассказал? Плюнь ему в лицо и выгони из своего дома.

anonymous
()
Ответ на: комментарий от drish

ISO IEC 9899-1999 C99 параграф 6.8.6.4 "The return statement". страница 139, вторая строка сверху. "A return statement without an expression shall only appear in a function whose return type is void."

про то, что если в функции возвращающей тип отличный от void использовать return без параметров возвратится 0 этого я в упор найти не могу.

Reset ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.