Visit Our UNIX and Linux User Community


Some error with number of keyboard inputs occured with this code for reversing a string..


 
Thread Tools Search this Thread
Top Forums Programming Some error with number of keyboard inputs occured with this code for reversing a string..
# 1  
Old 06-29-2011
Some error with number of keyboard inputs occured with this code for reversing a string..

i used a two-way linked list "node" for the code::
Code:
#include<stdio.h>
#include<malloc.h>

void insert();
void reverse();

struct node
{
	char c;
	struct node *next;
	struct node *back;
}*start=NULL;


int main()
{	
	int n,i;
	
	printf("Enter the size of the string to be reversed\n");
	scanf("%d",&n);
	printf("Now enter the %d character of the string one at a time",n);

	for(i=0;i<n;i++)
	{
		insert();
	}	
	
	reverse();	

	return(0);
}

void insert()

{	
        printf("\nEnter the character:\n");
	char w;
	scanf("%c",&w);

	struct node *tmp;

	tmp=malloc(sizeof(struct node));
        tmp->c=w;
        tmp->next=NULL;
        


        if(start==NULL)
                {
                       tmp->back=NULL;
                       start=tmp;
                }

        else
                {   
                        struct node *q;
                        q=start;
                     
                        while(q->next!=NULL)
                        {
                                q=q->next;
                        }
                     
                        tmp->back=q;
                        q->next=tmp;
                }
}	


void reverse()
{
	struct node *p=start;
	while(p->next!=NULL)
        {
                p=p->next;
        }


        printf("\nThe reversed string is :\n");


        while(p->back!=NULL)
        {
                printf("\t%c",p->c);
                p=p->back;
         }
}

# 2  
Old 06-29-2011
The malloc function is declared in stdlib.h not malloc.h...and scanf with %c wont skip over whitespace like the newlines that get carried over during input.
This User Gave Thanks to shamrock For This Post:
# 3  
Old 06-30-2011
Thanku for pointing out the part causing the problem with the input count...but can u suggest a way to overcome the problem..i couldn't get through it..n a little more on this behaviour of "scanf()" will also be helpful..
# 4  
Old 06-30-2011
Quote:
Originally Posted by mscoder
Thanku for pointing out the part causing the problem with the input count...but can u suggest a way to overcome the problem..i couldn't get through it
Just replace the %c with %1s and that will take care of scanf reading the newline in the input...
Code:
scanf("%1s", &w);

Quote:
Originally Posted by mscoder
..n a little more on this behaviour of "scanf()" will also be helpful..
And here is an excerpt from the scanf man page...
Code:
c                      A character is expected; the corresponding argument
                       should be a character pointer.  The normal skip-
                       over-white-space is suppressed in this case; to read
                       the next non-space character, use %1s.  If a field
                       width is given, the corresponding argument refers to
                       a character array; the indicated number of characters
                       is read.

This User Gave Thanks to shamrock For This Post:
# 5  
Old 06-30-2011
How about just:

Code:
char buf[64], c;
buf[0] = '\n';

while(buf[0] == '\n') // Ignore blank lines
{
        printf("Enter a character then ENTER:\n");
        fgets(buf, 64, stdin); // read entire line
}
c=buf[0];

don't use scanf if you don't need scanf, it's usually overkill and causes input buffering problems anyway.

Previous Thread | Next Thread
Test Your Knowledge in Computers #175
Difficulty: Medium
ENIAC was one of the first electronic computers and occupied 167 square meters, weighed 27 tons and consumed 150kW of electricity.
True or False?

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

How to send keyboard inputs toa UNIX command executed from a shell script?

I have a unix command that prompts for 'y'. How do I run this from my shell script? (4 Replies)
Discussion started by: Sree10
4 Replies

2. Shell Programming and Scripting

Automation of keyboard inputs..like Ctrl+d and Ctrl+a

Hi..! I'm stuck with my automation of starting a process and keeping it running even after the current ssh session has exited.. So i'm trying to use command 'screen'. which is doing exactly what i wanted, But the problem is automation of the same. i will have to press Ctrl+a and Ctrl+d for... (2 Replies)
Discussion started by: chandana hs
2 Replies

3. UNIX for Dummies Questions & Answers

Newbie Alert:Reversing part of a string?

Hello all, Wondering if anyone can help me out. Trying to cut the names out of the /etc/passwd file so that they can be displayed first then last name. I cut them out and put them into variables but cant get them to display side by side after cutting. Anyone able to help a newbie? (1 Reply)
Discussion started by: losingit
1 Replies

4. UNIX for Advanced & Expert Users

Error occured while running a script

Hi All, In my application, I'm getting an error as type mismatch Let me now explain the scenario, I ran a shell script which calls some other scripts. All these scripts uses the environment variables. Take for example, this script uses a variable 'PathDir'. I initiallized the value to... (2 Replies)
Discussion started by: iamgeethuj
2 Replies

5. Shell Programming and Scripting

Need help reversing this code

ssh servername.com "echo /$APP=$BUSIN >> $URI; echo /$APP/*=$BUSIN >> $URI" Ok for example here i ssh into a example servername.com, and I think what it does some line gets put into the urifile , my question is, how would i go about removing that in a script. in summary, the above code is... (3 Replies)
Discussion started by: new2learn09
3 Replies

6. Shell Programming and Scripting

reading and reversing a string

Hi Everyone....I am new to Unix and BASH programming...I just want to read a string and reverse it and display.....can anyone help me out???? (8 Replies)
Discussion started by: nikhilneela
8 Replies

7. UNIX for Dummies Questions & Answers

Help how replace stardard keyboard inputs by arguments at run time of a script

Hello Everybody, Please help. I was trying to automate the use of a third-party given shell script. The script is written to be used at run-time to collect a few variables to be provided by the user through key board, in the fashion as below: ./runcommand please provide a file name to... (6 Replies)
Discussion started by: Dingrong
6 Replies

8. Shell Programming and Scripting

read n number of inputs

Hello, I think its a sinple query but somehow i m stucked up here... I am trying to enter n number of inputs from the user and write them in an input file ie row wise... I tried standard commands like $echo "enter the inputs for the file" $read var1 var2 var3 var4 test1 test2... (14 Replies)
Discussion started by: er_aparna
14 Replies

9. Shell Programming and Scripting

output string in reversing order

If I have string { I_love_shell_scripts} anyone knows how to have output {stpircs_llehs_evol_I} by using shell and perl ?I know in perl, there is reverse() funcation, but can it be done by not using reverse()? (3 Replies)
Discussion started by: ccp
3 Replies

10. Shell Programming and Scripting

Reversing and trim a String through SHELL script

All I want to reverse and trim a string using UNIX shell scripts.Iam using Bourne shells. Can you help me? Thanx in advance Regards Deepak (5 Replies)
Discussion started by: DeepakXavier
5 Replies

Featured Tech Videos