Главная страница


ru.linux

 
 - RU.LINUX ---------------------------------------------------------------------
 From : Sergey Mudry                         2:5020/400     16 Jan 2003  12:32:23
 To : Ilja Elizarov
 Subject : printf обрезает строку до пробела
 -------------------------------------------------------------------------------- 
 
 Hello, Ilja!
 You wrote to All on Wed, 15 Jan 2003 21:56:24 +0300:
 
  IE> Вот решил начирикать небольшой исходничек, т.к. решил заняться
  IE> кодингом на c++, а cout и cin - нет в линухе, поэтому пришлось
 
 Уверен? А проверял?
 
  IE> самому осваивать scanf и printf.
  IE> И так исходник:
 
  IE> #include <stdio.h>
  IE> char *value;
 
 /* Hутром чувствую что офтопик */
 Где тут буфер для ввода?
 Здесь только указатель.
 
  IE> main()
  IE> {
  IE>     printf("Введите текст: ");
  IE>     scanf("%s",&value);
 
 При такой передаче параметра scanf безопасно сможет прочитать не более 3
 символов.
 
  IE>     printf("Вы ввели: ");
  IE>     printf("%s\n",&value);
  IE> }
 
  IE> Если ввесть скажем: Helloworld, то на экран уйдёт Helloworld, а
 
 если
 
  IE> "hello world", то на выход уйдёт лишь "hello", почему такое
 
 Считай, что тебе просто фатально повезло. Ты вполне мог получить и
 "Segmentation fault"
 
  IE> происходит?
 
 Во первых, создай буфер для ввода. Hапример так:
 
 char value[200];
 
 или так:
 
 char *value;
 main() {
   value=malloc(200);
   ...
 
 Во вторых режет не printf, а scanf. Формат "%s" читает строку до
 разделителя, в качестве которого может выступать и пробел. Попробуй
 использовать "%[^\n]"
 В третьих  scanf нужно отдать value, а вовсе не &value - это разные
 вещи.
 В printf  - то же самое.
 А вообще, scanf - потенциальный источник глюков, связаных с
 переполнением буфера.
 Используй вместо него fgets или даже просто read
 Короче, должно получиться нечто вроде:
 
 #include <stdio.h>
 char value[200];
 main()
 {
     printf("Введите текст: ");
     fgets(value,200,stdin);
     printf("Вы ввели: ");
     printf("%s\n",value);
 }
 
 А вообще тебе прямая дорога в su.c_cpp
 With best regards, Serg, aka upx@nc.ru, upx@ukr.net
 --- ifmail v.2.15dev5
  * Origin: Donbass Internet Center DIPT (2:5020/400)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 printf обрезает строку до пробела   Ilja Elizarov   15 Jan 2003 22:56:24 
 Re: printf обрезает строку до пробела   Vladimir Bormotov   16 Jan 2003 04:30:29 
 Re: printf обрезает строку до пробела   Victor Wagner   16 Jan 2003 11:03:38 
 Re: printf обрезает строку до пробела   Aleksey Cheusov   16 Jan 2003 13:33:18 
 Re: printf обрезает строку до пробела   Aleksey Cheusov   16 Jan 2003 13:39:33 
 Re: printf обрезает строку до пробела   BorLase   16 Jan 2003 13:54:18 
 Re: printf обрезает строку до пробела   Aleksey Cheusov   16 Jan 2003 15:01:26 
 Re: printf обрезает строку до пробела   Vladimir Bormotov   16 Jan 2003 15:40:46 
 Re: printf обрезает строку до пробела   Ilya Anfimov   20 Jan 2003 19:18:37 
 printf обрезает строку до пробела   Alex Shatlovsky   16 Jan 2003 19:31:53 
 Re: printf обрезает строку до пробела   Victor Wagner   16 Jan 2003 14:10:20 
 Re: printf обрезает строку до пробела   BorLase   16 Jan 2003 14:18:04 
 Re: printf обрезает строку до пробела   Victor Wagner   16 Jan 2003 14:31:58 
 printf обрезает строку до пробела   Alex Shatlovsky   16 Jan 2003 19:38:49 
 Re: printf обрезает строку до пробела   Victor Wagner   18 Jan 2003 00:28:48 
 Re: printf обрезает строку до пробела   Aleksey Cheusov   16 Jan 2003 16:28:27 
 Re: printf обрезает строку до пробела   Vladimir Bormotov   16 Jan 2003 16:40:46 
 Re: printf обрезает строку до пробела   Aleksey Cheusov   16 Jan 2003 18:21:43 
 printf обрезает строку до пробела   Kirill Frolov   17 Jan 2003 23:51:14 
 printf обрезает строку до пробела   Sergey Mudry   16 Jan 2003 12:32:23 
 Re: printf обрезает строку до пробела   BorLase   16 Jan 2003 13:15:12 
 printf обрезает строку до пробела   Kirill Frolov   18 Jan 2003 00:02:50 
 printf обрезает строку до пробела   Peter Irich   17 Jan 2003 23:28:28 
 printf обрезает строку до пробела   Nikita Melnikov   18 Jan 2003 01:56:04 
Архивное /ru.linux/12005ac7c0450.html, оценка 3 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional