
Originally Posted by
clark
I am trying to reverse a string without using "strrev"...naay sayup nya ga libug jud ko
By the way, this is TurboC
#include <stdio.h>
int reverse(char r);
main ()
{
int i,j;
char a[10];
char temp;
clrscr ();
printf("Enter a string: ");
gets(a);
reverse(a[i],temp);
getch();
}
int reverse(char r){
for (i=0;a[i]!='\0';i++);
i--;
for (j=0;j <= i/2 ;j++)
{
temp = a[j];
a[j] = a[i-j];
a[i-j] = temp;
}
printf("%s",a);
getch();
}
Code:
#include <stdio.h>
/*
* return type should be void, not an int kay
* wala man return value ang reverse nga function.
* parameter should be char * para ang parameter kay
* ang memory address pointer sa actual variable.
* diri kay char ra man, meaning iyang parameter kay
* variable nga 1 character value ra.
*
* void reverse(char *);
*/
int reverse(char r);
/*
* main should return an int value para makabalo ang OS
* kung unsay resulta sa program, zero means way error,
* meaning smooth-sailing ang program. the parameter
* should be void para klaro nga way command-line arguments
* nga gamiton ang program. di man jud ni necessary pero mas
* mau kung mo-comply na lang daan mintras nagsugod pa lang.
*
* int main(void)
*/
main ()
{
/*
* the declarations of "i" and "j" vars should be moved
* sulod sa reverse nga function kay didto man sila gigamit.
* dili dri sa main nga function.
*/
int i,j;
/*
* take note, ang variable nga "a" kay 10 characters ray
* masulod dala sa NULL character para terminate sa string.
*/
char a[10];
/*
* same sa "i" and "j" variables, kinghanlan i-move sa
* reverse nga function ang "temp" kay didto man siya gamiton.
*/
char temp;
clrscr ();
printf("Enter a string: ");
/*
* dili advisable ang gets function nga gamiton kay prone
* to errors or exploit ni nga function, for example, what
* if ang i-input sa user kay more than 10 characters? mo-
* overflow na kay 10 ra man ang maximum nga ma-hold nga
* characters sa variable "a".
*/
gets(a);
/*
* reverse function should only take one parameter kay mao
* may naka-state sa function prototype sa ibabaw. mo-error
* ni inig compile kay nag-expect man ang compiler nga
* usa ra kabuok parameter unta unya duha man ang gi-supply
* dri nga linya.
*
* reverse(a);
*/
reverse(a[i],temp);
getch();
/*
* before mo-end ang program, mas maayo pahibaw-on ang OS
* kung unsay resulta sa program, return 0 na lang - meaning
* ok ra ang dagan sa program.
*
* return 0;
*/
}
/*
* return type sa reverse function should be void kay wa may
* return value, parameter should be a char pointer para diretso
* manipulate sa data. unya instead of "r", "a" unta dapat
* gamiton kay mao man gigamit nga variable name sa ubos (sa loop).
*
* void reverse(char *a){
*/
int reverse(char r){
/*
* variables "i", "j", and "temp" should be declared first
* before sila pwede gamiton.
*/
for (i=0;a[i]!='\0';i++);
i--;
for (j=0;j <= i/2 ;j++)
{
temp = a[j];
a[j] = a[i-j];
a[i-j] = temp;
}
printf("%s",a);
/*
* no need na ang getch() diri dapita kay once mahuman ni nga
* function, naa may mosunod nga getch() function.
*/
getch();
/*
* return 0 ta ni dapat kay gi-declare man nga int type
* ang return value ani nga function, kay wa may gi-return.
* i-void na lang ni nga function.
*/
}
mao ni imong code bro with the appropriate changes para modagan siya...
Code:
#include <stdio.h>
void reverse(char *);
int main(void)
{
char a[10];
clrscr();
printf("Enter a string: ");
gets(a);
reverse(a);
getch();
return 0;
}
void reverse(char *a)
{
int i, j;
char temp;
for(i = 0; a[i] != '\0'; i++);
i--;
for(j = 0; j <= i / 2; j++)
{
temp = a[j];
a[j] = a[i - j];
a[i - j] = temp;
}
printf("%s", a);
}