• Support PF! Buy your school textbooks, materials and every day products Here!

Printing string-help.

  • #1

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...



Homework Equations





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!
 

Answers and Replies

  • #2
uart
Science Advisor
2,776
9
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.
 
  • #3
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.
 
  • #4
uart
Science Advisor
2,776
9
I don't quite understand your question, is tnirp() a function that you are supposed to write? Where is the code for it.
 
  • #5
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;
}
 
  • #6
33,075
4,779
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.
 

Related Threads for: Printing string-help.

Replies
1
Views
14K
  • Last Post
Replies
4
Views
1K
  • Last Post
Replies
2
Views
811
  • Last Post
Replies
5
Views
1K
Replies
8
Views
3K
  • Last Post
Replies
2
Views
3K
Replies
1
Views
1K
Replies
26
Views
2K
Top