A "read" system call should have a parameter for "bytes to read" - in edx for Linux, on the stack for Windows, BSD, Mac(?)... Make sure your buffer is big enough to hold it. If you propose to zero-terminate the input, you may want to add one to the buffer for the zero (unless you're overwriting a linefeed).
If you're reading from stdin, the call won't return until a linefeed is encountered. If the pesky user just keeps typing, you'll get "bytes to read" bytes in your buffer, and any excess - including the linefeed - will be in an OS buffer... which will show up in the next "read" - possibly on the command line after your program exits (yuck!). You can flush this OS buffer by reading one byte at a time until you find the linefeed, if it isn't in "your" buffer...
If that doesn't answer the question, try giving us a more specific example of what you're trying to do...
Best,
Frank