# Printing string-help.

## Homework Statement

I am trying to write up code to reverse the order of a string i.e.

input: and
output: dna
For some reason I am getting this compiling warning but I don't know whats wrong with my code...

## The Attempt at a Solution

Code:
#include <stdio.h>
#include <string.h>
#define MAX_LENGTH 20
int main(int argc, char * argv[]){

char s[MAX_LENGTH];

printf("Enter String\n");
if( fgets(s,MAX_LENGTH,stdin) != NULL){
tnirp(s);

}

// original string
printf("\n, %s",s);

// the number of characters in a string
int i = 0;
while(s[i] != 0){
i++;
}

// Reverse string
printf("\n");
int idx;
for(idx = 0;idx < i;){
i--; // I place this here instead of in the for loop,
// because the for loop will subtract 1 from i
// before 'string' can even begin to print, thus
// the last char will not be printed.
printf("%c", s[i]);
}

return 0;

and this is the compiler warning
warnings being treated as errors
In function ‘main’:
warning: implicit declaration of function ‘tnirp’

any help is great!

Related Engineering and Comp Sci Homework Help News on Phys.org
uart
The error message is fairly self explanatory. It's saying you've written " tnirp(s);", which implies that tnirp() is a function, however it is not defined anywhere.

The error message is fairly self explanatory. It's saying you've written " tnirp(s);", which implies that tnirp() is a function, however it is not defined anywhere.
Ok so If I have tnirp() at the start of the code ie

Code:
#include <stdio.h>
#include <string.h>
#define MAX_LENGTH 20
int main(int argc, char * argv[]){
tnirp()

char s[MAX_LENGTH];

but that does not fix it ,,, I have to submit this in an hour so I really need help thanks.

uart
I don't quite understand your question, is tnirp() a function that you are supposed to write? Where is the code for it.

I don't quite understand your question, is tnirp() a function that you are supposed to write? Where is the code for it.
Write a function

void tnirp(char s[]);

which takes a string s as a parameter and prints the characters of s in reverse order. Only characters up to the first '\0' or the first '\n' should be included, and a newline character '\n' should be printed at the end. Place the code for this function in a file called tnirp.c. Now write a main() function with the following contents.

#define MAX_LENGTH 20
int main(int argc, char * argv[]){
char s[MAX_LENGTH];

printf("Enter String\n");
// fgets returns NULL if it gets only a ctrl ^d
if( fgets(s,MAX_LENGTH,stdin) != NULL ){
tnirp(s);
}
return 0;
}

Mark44
Mentor
Write a function

void tnirp(char s[]);

which takes a string s as a parameter and prints the characters of s in reverse order. Only characters up to the first '\0' or the first '\n' should be included, and a newline character '\n' should be printed at the end. Place the code for this function in a file called tnirp.c. Now write a main() function with the following contents.

#define MAX_LENGTH 20
int main(int argc, char * argv[]){
char s[MAX_LENGTH];

printf("Enter String\n");
// fgets returns NULL if it gets only a ctrl ^d
if( fgets(s,MAX_LENGTH,stdin) != NULL ){
tnirp(s);
}
return 0;
}
You have not written the tnirp function. You have its declaration (or prototype) here
Code:
void tnirp(char s[]);
and you have the invocation (or call) to this function here (in your if block)
Code:
tnirp(s);
but you don't show a definition for this function. The definition would consist of the instructions in C for printing a string in reverse order.