Reverse String: Fixing Compiling Warning

  • Thread starter Thread starter charmedbeauty
  • Start date Start date
  • Tags Tags
    Printing
AI Thread Summary
The discussion revolves around a coding issue related to reversing a string in C. The user encounters a compiler warning due to an implicit declaration of the function "tnirp," which is not defined in the code. To resolve this, it's suggested to create a function "tnirp" that takes a string as a parameter and prints it in reverse order, ensuring to include a newline at the end. The user is advised to write the function definition separately and call it correctly in the main function. Properly defining and implementing the "tnirp" function will eliminate the warning and achieve the desired output.
charmedbeauty
Messages
266
Reaction score
0

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 what's 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!
 
Physics news on Phys.org
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.
 
uart said:
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.
 
I don't quite understand your question, is tnirp() a function that you are supposed to write? Where is the code for it.
 
uart said:
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;
}
 
charmedbeauty said:
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.
 
Thread 'Have I solved this structural engineering equation correctly?'
Hi all, I have a structural engineering book from 1979. I am trying to follow it as best as I can. I have come to a formula that calculates the rotations in radians at the rigid joint that requires an iterative procedure. This equation comes in the form of: $$ x_i = \frac {Q_ih_i + Q_{i+1}h_{i+1}}{4K} + \frac {C}{K}x_{i-1} + \frac {C}{K}x_{i+1} $$ Where: ## Q ## is the horizontal storey shear ## h ## is the storey height ## K = (6G_i + C_i + C_{i+1}) ## ## G = \frac {I_g}{h} ## ## C...

Similar threads

Replies
2
Views
2K
Replies
7
Views
2K
Replies
3
Views
1K
Replies
12
Views
2K
Replies
8
Views
2K
Replies
2
Views
2K
Back
Top