Suman said:
gyan said:
I want to read a line with white spaces though scanf.
So i used:
scanf("%['/n']",string);
above is working in one program,
but in other..what may be the reason?
#define LENGTH 20
#define str(x) # x
#define xstr(x) str(x)
int rc;
char array[LENGTH + 1];
rc = scanf("%" xstr(LENGTH) "[^\n]%*[^\n]", array);
^
Just a query, should we not write "[^\n]%*1[^\n]", instead?
No.
That's supposed to eat *all*
of the line characters which exceded LENGTH, if there are any,
up to but not including the newline.
On my gcc (4.0.0)
it keeps waiting if I don't specify the length.
Neat, really very neat!
/* BEGIN new.c */
#include <stdio.h>
#include <stdlib.h>
#define LENGTH 30
#define str(x) # x
#define xstr(x) str(x)
int main(void)
{
int rc;
char string[LENGTH + 1];
fputs("Enter a string with spaces:", stdout);
fflush(stdout);
rc = scanf("%" xstr(LENGTH) "[^\n]%*[^\n]", string);
if (!feof(stdin)) {
getchar();
}
while (rc == 1) {
printf("Your string is:%s\n\n"
"Hit the Enter key to end,\nor enter "
"another string to continue:", string);
fflush(stdout);
rc = scanf("%" xstr(LENGTH) "[^\n]%*[^\n]", string);
if (!feof(stdin)) {
getchar();
}
}
return 0;
}
/* END new.c */