C++ :: Input Does Not Enter Buffer When Sleeping
Aug 7, 2014
When the program is processing/sleeping, those char input at that time would not goes into the buffer until the next input request (such as calling istream::get). The program below shows this.
#include <iostream>
#include <streambuf>
#include <chrono>
#include <thread>
int main() {
std::cout << "Sleeping...
[Code] ....
I wonder if there is a way to distinguish between the input comes from the time that does not request it (i.e., during processing or sleeping) and those comes after the time does request it (in the example, after "Input something: ").
View 3 Replies
ADVERTISEMENT
Aug 13, 2014
I would just like to know what does
while( (c =getchar())!='
' && c !=EOF );
do ? and how it do it?
I have see it in a example to clear the input buffer for next input through scanf but does not know its working clearly.
it is used in this example :
Code:
#include<stdio.h>
struct linklist {
char value[20];
struct linklist *next;
};
struct linklist *head,*curr;
[Code] .....
View 4 Replies
View Related
May 30, 2012
How we can make another thread sleeping ?
As you know, Thread.Sleep(Timespan) function makes the current thread sleeping, but i want to make a specific thread sleeping.
View 1 Replies
View Related
Mar 29, 2013
I plan to read one character at a time from a very large text file.
The tokens that I would like to extract are basically words and they are delimited by varying numbers of spaces or tabs.
For example, the first line has two words separated by five spaces:
Joe Mark
Problem:I apply get() each time advancing towards Mark. For me to know ive reached the next token, Mark, I merely have to get() until it equals 'M'. The problem by then its too late as Ive already captured 'M'. I somehow need to capture the fifth space and the code must "know" the next character is 'M' without getting() it.
Kernighan and Richie offer us a function getch() and ungetch() whereby the ungetch pushes back the last character into the input . The problem with this is that I believe is that the buffer is not the actual input buffer stream but rather a simulated character array which contains the input. I dont think itll be as efficient on a text file so large.
View 9 Replies
View Related
May 6, 2014
The documentation of the class filebuf in the reference of cplusplus.com says:
Objects of this class may internally maintain an intermediate input buffer and/or an intermediate output buffer, where individual characters are read or written by i/o operations. These buffers are synchronized with the contents of the file once filled up, when explicitly requested to do so (sync), or when the object is closed.
Objects of this class may be explicitly made unbuffered by calling member pubsetbuf with both arguments set to zero (see member setbuf): Unbuffered file stream buffers perform the i/o operations directly on the file, without an intermediate buffer.
The C++ standard ensures that filebuf objects have an intermediate input/output buffer/s (i.e, the default constructor of the class filebuf creates the intermediate buffer/s)?
The standard C++ library only allows unbuffering filebuf objects (as the above quote says) but doesn't allow forcing filebuf objects to be buffered.
I have been seeying the concrete implementation code of the standard C++ library in my Windows Operating System (Windows 7 Ultimate 64 bits Service Pack 1) and it seems that fielbuf objects never uses intermediate input/output buffer/s, they use FILE streams of the standard C library instead to do the work. Are this FILE streams always buffered? If true, are they fully-buffered or line-buffered? what is the size of the buffers (perhaps macro BUFSIZ from <cstdio>)? and can I change this size?
I am worried about performance in reading and writing from/to files: if the default behaviour offers the best performance (perhaps if files are too large is better force buffering and choose a larger buffer size).
View 2 Replies
View Related
Apr 16, 2014
Using cin.sync() works great so far, but my program still breaks if you copy something with multiple lines into the console.
string test = "";
while(true) {
cin.sync();
getline(cin, test );
cout << endl << "test: " << test << endl;
}
However, if you were to copy this:
1
2
3
and paste it into the program, the output would be1
2
3
test: 1
test: 2
And if you press enter one more time:1
2
3
test: 1
test: 2
test: 3
The 3 finally pops out.
View 2 Replies
View Related
Mar 6, 2015
I wrote a program that reads user input string using fgets() function. After this, program will ask if the user wants to save the string to file or does the user want to change the string or quit without saving. If user wants to change the string this must be made possible by asking for the string again. After this, menu will be printed again printing the choices available.
I had to flush stdin before getting changing input! However, problem is "Why do I have to hit return key 2 times, when I choose 2 and input string again." (I use code block 13.12 with windows 8.1 laptop) */
Code:
#include <stdio.h>
#include <string.h>
#define MAX 50
[Code]....
View 9 Replies
View Related
Jan 23, 2015
Basically I'm having trouble reading more than one character.I want the user to input character traits(ie, w, a), if two traits are entered they get the job.
But I cannot get my program to read more than one character input.
This is what I have so far...
#include <iostream>
using namespace std;
int main(){
char input;
int count = 0;
[Code] .....
View 6 Replies
View Related
Dec 20, 2014
I'm trying to validate my input. I require for the user to enter six doubles and if they don't then I want them to re-enter the information. Here is my code:
Code:
while (1>0) {
printf("Please enter arguments in the order: negative mass, positive mass, initial x-position, initial y-position, initial x-velocity, initial y-velocity:
");
if ( scanf("%lf %lf %lf %lf %lf %lf",&MassMinus,&MassPlus,&Pos[0][0],&Pos[0][1],&Vel[0][0],&Vel[0][1]) != 6) {
printf("Not all numbers were assigned!
[Code] .....
At the moment it just waits if you enter less than six numbers and if you enter any more than 6 it just ignores anything after the sixth number (so pretty much does nothing). Also if I entered 1 2 a b 3 4 instead of entering six numbers it would register that as 1 2 0 0 3 4 but I want it to make the user input the numbers again. I'm also aware that "while (1>0)" isn't good programming form but I'm not really sure what to use instead?
View 11 Replies
View Related
Aug 25, 2013
When the user gives no input, they have to press enter twice before "Done." is printed.
cout << "What do you want the name of your page to be? ";
std::getline(cin, pageTitle);
if (cin.get() == '
')
pageTitle = "Welcome to Website.";
cout << "Done.
";
Is there a way to print "Done." after pressing enter once?
View 2 Replies
View Related
Jan 16, 2013
Code:
#include<iostream.h>
#include<conio.h>
#include<string.h>
void main() {
clrscr();
int i=0,flag=1;
cout<<"Enter the password.";
[Code] ....
When I input the password, the Backspace and the Enter keys are not working as they should. Also, I want to know if I can press enter only once to input the password, not twice.
Compiler is Turbo C++ 3.0 on Windows 7.
View 1 Replies
View Related
Apr 23, 2014
how can i make a program which allows a user to enter an input for a time interval for example i ask a question and sets the input to be entered within 10 seconds...
View 4 Replies
View Related
Feb 1, 2015
How would you be able to show both outputs celsius and Fahrenheit and my temperature conversion is coming up wrong when i enter in the input. here is my code...
#include<iostream>
using namespace std;
int main(){
double celsius;
double fahrenheit;
[code].....
View 1 Replies
View Related
Feb 27, 2012
It seems to be going null. I can't get a null value, I want it to accept input till the user hits enter with no text typed. I've tried checking to see if the input is NULL, "", and " " all to no avail.
Code:
#include <stdio.h>
#include <sys/shm.h>
#include <sys/stat.h>
#include <iostream>
#include <fstream>
#include <string.h>
#include <cstring>
using namespace std;
int main() {
string info = "";
[Code] ....
View 7 Replies
View Related
Oct 29, 2014
I have an int array of size 5 and I have my program to accept 5 integers between 10 and 100 inclusively. I should be able to type integers over and over again until I get 5 that are in the range, 10 <= x <= 100. Now when I get 5 that fall in that range the program should continue but instead it wants a 6th number before continuing. I'm suspecting the program is hanging on to a new line character. Anyway to ignore the new lines? Couldn't find anything for C# without clearing the screen.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DupElim {
//dup elimination
[code]....
View 5 Replies
View Related
Oct 17, 2014
Im creating a permissions profiler in c by using stat()I ran into a problem of getting a bad address as in my path. Ive tried multiple solutions with no dice, and now I have one more solution I want to try but I dont understand how.how do you use a snprintf and pass that into a buffer, and pass that into a path for stat()?
View 9 Replies
View Related
Jan 12, 2015
I`ve wrote a function for my utility to XOR char* buffer by a key, then to reverse it with the same key. Here is the code, it`s simple enough:
Code:
static inline char* XOR_buffer(const char* d, const char* k ) {
char *newstr = (char*) malloc(sizeof(char)* strlen(d));
newstr[0]='';
printf("%d is size of string
", strlen(d));
char *begin = newstr;
char* ret = begin;
int len = strlen(k);
}
[code]....
The lengh of the string is reduced by the second XOR call. You can try it out, just define XORDBG to view the error message in the second pass to the buffer.
View 9 Replies
View Related
Feb 5, 2014
I want to use a const char* as a buffer. I am reading values from a file and adding them to a buffer. How to extract the values is simple enough. I am reading through a filestream, reading each character into a char pointer and progressing that char pointer every time. I have another char pointer marking the start positon
eg.
char *mychar = new char;
char *char1 = new char;
char *char2 = new char;
const char *constchar ;
char2 = char1;
while(filestream.read(mychar,1) {
*char1 = *mychar;
++char1;
}
Then I get this problem: constchar = mychar; // const char* = char*.
Constchar does not catch all the data in other words. At some stage some data is lost due to zeros in the data.. How can I put values into a const char and get around this problem? The const char* will //only record everything up until the first zero.
View 6 Replies
View Related
Aug 22, 2014
suddenly nothing is written to my file
void taglessLine(char line[],ofstream& buffer){
buffer.open("buffer.txt", ios::out);
int len=strlen(line);
[Code].....
View 2 Replies
View Related
Dec 17, 2014
get some opinions on, or established methods on how your buffer size should be decided.
View 2 Replies
View Related
Oct 10, 2014
I am writing a program and am asking the user to enter a number between 1-12.
If they do not, they will be promoted over and over again to enter a number between 1-12.
However, if the user enters a letter or anything else scanf seems to stop working and then my loop goes out of control.
View 2 Replies
View Related
May 9, 2012
I'm trying to analyze buffer text, but unfortunately i'm not able to do so... My approach
Code:
// here i'm getting and reading text from the user
bzero(buffer, 1024);
read(m_Socket, buffer, 1023);
string inputText;
inputText = string(buffer);
[code]....
View 2 Replies
View Related
Apr 13, 2014
Basically it has to do with the byte ordering in a binary buffer vs the typing of a variable used to hold it.
To give you an example, if I have a buffer (say of indefinite length), and a ptr "ptr" pointing to a byte in the buffer (say, C0), such that if I open the buffer in a binary viewer it reads like this: Code: C0 DD FE 1F Such that this is true:
Code:
/*ptr is uint8_t*/
*ptr == 0xC0
Then I do this:
Code:
uint16_t var;
var = *(ptr+1);
I would expect the result to be:
Code: DD FE /*56830*/
Though if I print that out with:
Code:
printf("%u
", var);
It'll print:
Code: 65245 /*(FE DD)*/
Now obviously it's byte swapped, but what is causing that? I'm assuming if I just stream that out to a file byte by byte it'll be fine, so it's something with the 16 bit data type (also have seen this issue with a 32 bit data type, where all 4 are in reverse order). Is there any way to 'fix' it except bit shifts & masks?
View 14 Replies
View Related
Jan 3, 2014
Code:
char buffer1[10];
char buffer2[10] = "something";
sprintf(buffer1, "with %s", buffer2);
In a statement like the one above, is there a threat/leak or does it only truncate the string that is loaded into buffer1?
View 5 Replies
View Related
Jul 11, 2014
How to assign numbers stored in a buffer memory to a 2D array.
The data type is unsigned 16bit (unsigned short) integers and they are stored in a 16bit/2bytes*1280*1024=2621440 bytes memory. The pointer pBuffer is the starting address of the buffer. Now I initiated an array and then assign the numbers to the array.
Code:
unsigned frame[1280][1024];
for (int i=0;i<1024;i++){
for(int j=0;j<1280;j++){
frame[i][j]=(*(unsigned short*)pBuffer+1024*i+j);
printf("%u ", frame[i][j]);
}
printf("
");
}
Because I know the number in the memory, I know after running the code that the result gives me nonsense.
I tried frame[i][j]=(*(unsigned short*)pBuffer+1024*2*i+2*j);
Since I think the pointer needs to move 2 bytes at a time, but it still gives me nonsensical array back.
Am I using the wrong expression to assign the values?
View 3 Replies
View Related
Jul 10, 2014
I am having some issue with clearing cin buffer. The following code does not wait for me to see the output window and till I hit return character.
#include "iostream"
#include "stdio.h"
#include "math.h"
#include "string"
#include "sstream"
using namespace std;
[Code] ....
I tried
cin.flush, cin.ignore(numeric_limits<streamsize>::max(), '
'); cin.clear(); fflush(stdin);.
None of them worked
I am working on Microsoft visual studio express 2013 for windows desktop.
View 3 Replies
View Related