Внутренний цикл while выполняется бесконечно, хотя значение i = n
является конечным.
Он компилирует, но показывает ошибку сегментации.Преобразование формата формата даты с dd/mm/yyyy в yyyy/mm/dd с использованием C
Мой код
char s[]="22/02/1997",r[20],temp[20];
int i,j,k,z,n;
for(n=strlen(s)-1; n>=0; n=i)
{
i=n;
k=0;
while(s[i]!='/' || s[i]!='-')
{
temp[k++]=s[i];
i--;
}
i--;
for(z=strlen(temp)-1,j=0; z>=0; z--,j++)
{
r[j]=temp[z];
}
temp[0]='\0'; //empty the array
}
printf("%s",r);
Следуя [Законом Де Моргана] (https://en.wikipedia.org/wiki/De_Morgan's_laws), этот 's [i]! = '/' || s [i]! = '-' 'совпадает с'! (s [i] == '/' && s [i] == '-') ', который будет оцениваться как false (и с этой целью' while'-loop) * only * if 's [i]' равно ''/''и' '-'' в то же время, что никогда не будет *. – alk
В цикле 'while', когда вы достигаете nb дня, нет никакого контроля, чтобы остановить его, поскольку после него нет косой черты. лучше добавить 'i> = 0' –
' j = 0' должно находиться за пределами первого цикла 'for'. –