Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [C++]строка


Автор: Be_Happy 4.12.2007, 19:43
Написал,программу, которая должна выводить все символы строки до пробела, но чтото не нравится в 16 строчке, не могли бы объяснить что.
Код

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<iostream.h>
void main(void)
{
    char p[200];
    cin.getline(p, 200);
    printf("%s\n", p);
    int b=strlen(p);
    printf("%d\n", b);
    for(int i=0; i<b; i++)
    {
        if(p[i]!=' ')
        {
            printf("%s", p[i]);
        }
    }
}

Автор: Sartorius 4.12.2007, 19:55
Код

          printf("%s", p[i]);


 В стек отдаешь символ, а спецификатор %s предполагает адрес. 
Пиши тогда
Код

          printf("%s", &p[i]);


 но логика все равно не правильная 
 Так например будет работать
Код

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<iostream.h>
void main(void)
{
    char p[200];
    cin.getline(p, 200);
    printf("%s\n", p);
    int b=strlen(p);
    printf("%d\n", b);
    for(int i=0; i<=b; i++)
    {
       if (p[i] == ' ')
                break;
    }

     p[i] = 0;

     printf("%s", p);
       
}


Автор: zkv 4.12.2007, 20:00
Цитата(Be_Happy @  4.12.2007,  19:43 Найти цитируемый пост)
            printf("%s", p[i]);

думаю ты имел ввиду printf("%c", p[i]);

Автор: Be_Happy 4.12.2007, 20:05
Sartorius, Спасибо за помощ, но почему логика неправильная и для чего на 18 строчке обнуляется значение?

Добавлено @ 20:08
zkv, так пробелы вобще удаляются=)

Автор: likehood 4.12.2007, 20:20
тогда так
Код

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<iostream.h>
void main(void)
{
    char p[200];
    cin.getline(p, 200);
    printf("%s\n", p);
    int b=strlen(p);
    printf("%d\n", b);
    for(int i=0; i<b; i++)
    {
        if(p[i]!=' ')
        {
            printf("%c", p[i]);
        }
        else break;
    }

}

Автор: Be_Happy 4.12.2007, 20:46
likehood, это я всё понял, но тока не знаю что такое , подскажешь?

Автор: likehood 4.12.2007, 20:53
%с - вывод одного символа, а %s - строки (до нулевого символа)

Автор: zkv 4.12.2007, 21:10
Цитата(Be_Happy @  4.12.2007,  20:05 Найти цитируемый пост)
zkv, так пробелы вобще удаляются=)

я в логику не вдумывался, показал на то, что в глаза бросилось, тем более ты акцентировал внимание на этой строке  smile 

Автор: Be_Happy 4.12.2007, 21:10
likehoodСПАСИБО!!!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)