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 #769
Difficulty: Medium
Intel Core i7 (2008) has an 8 MB on-die unified L3 cache that is inclusive, shared by all cores.
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