Форум программистов, компьютерный форум CyberForum.ru

Не могу заставить правильно посчитать символы (strlen) - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ сделать свою Beep() http://www.cyberforum.ru/cpp-beginners/thread1105635.html
собственно как она реализуется ? может кто знает?
C++ Расширенный алгоритм Евклида Здравствуйте, форумчане! Подскажите пожалуйста как реализовать такое задание(код самого алгоритма Евклида прилагается): Программа должна предусматривать ввод исходных данных: двух неотрицательных чисел, модуля и выдачу результата: обратной величины по модулю. #include <iostream> #include <cmath> using namespace std; int ext_gcd(int a, int b, int& x, int& y){ int q, r, x1, x2, y1, y2,d;... http://www.cyberforum.ru/cpp-beginners/thread1105629.html
Класс дельта C++
Создать класс дельта таким образом что бы каждый объект имел свой персональный номер (дескриптор объекта) и функцию которая возвращает его значение Добавлено через 21 час 18 минут #include <iostream> #include <conio.h> using namespace std; class Delta{ protected:
Дано пятизначное натурально число. Если последняя цифра больше первой то их нужно поменять местами C++
Помогите дополнить задачу.Дано пятизначное натурально число. Если последняя цифра больше первой то их нужно поменять местами. #include <stdio.h> #include <conio.h> main() } unsigned long int a,b,n; printf("n="); scanf("%li",&n); if(n>99999,b<10000)printf(Deistvie ne vipolnyaetsa"); else
C++ Как внести класс в пространство имён http://www.cyberforum.ru/cpp-beginners/thread1105614.html
Есть задача, которую решил, там надо было поработать в пространстве имён. В следующей необходимо было это всё переделать под класс, находящийся в пространстве имён. 2 файла сделал, а с пользовательским у меня косяк. cnsp.h #ifndef CNSP_H_ #define CNSP_H_ namespace SALES { class Sales { private: const int QUARTERS=4;
C++ Как с помощью cin ввести нуль терминированную строку? Как с помощью cin ввести "законченную" строчку, имеется в виду символ ноль. таким образов не вводится. какие есть варианты? cin >> ptr1; ptr1 = '\0'; подробнее

Показать сообщение отдельно
andrejap
13 / 13 / 1
Регистрация: 21.04.2013
Сообщений: 245
26.02.2014, 00:14     Не могу заставить правильно посчитать символы (strlen)
Здравствуйте.
Помогите, пожалуйста. Код и вывод на скриншоте. Обратите внимание, что стоит проверка (см. комментарий) - вот там и считает неправильно. То есть, почему strlen(tempname) выдает меньше символов, чем ввел?
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
#include <iostream>
#include <cstring>
 
const int slen = 30;
 
struct student {
        char fullname[slen];
        char hobby[slen];
        int ooplevel;
};
 
int getinfo(student*, short int*);
// void display1(student);
// void display2(const student*);
// void display3(const student*, int);
 
int main() {
        short int class_size;
        std::cout << "Enter class size: ";
        std::cin >> class_size;
        while (std::cin.get() != '\n')
                continue;
        student* ptr_stu = new student[class_size];
        int entered = getinfo(ptr_stu, &class_size);
        /* for (int i = 0; i < entered; i++) {
                display1(ptr_stu[i]);
                display2(&ptr_stu[i]);
        }
        display3(ptr_stu, entered); */
        delete [] ptr_stu;
        std::cout << "Done\n";
        return 0;
}
 
int getinfo(student* st, short int* p_class_size) {
        short int st_to_add = -1;
        const short int templen = 100;
        char tempname[templen];
        while(true) {
                std::cout << "How many students you want to add?\n";
                std::cin >> st_to_add;
                if (st_to_add > *p_class_size) {
                        std::cout << "Too much students you want to add!\nRepeat! ";
                }
                else {
                        while(st_to_add) {
                                std::cout << "Enter fullname\n";
                                std::cin.getline(tempname, templen);
                                std::cin.get();
                                std::cout <<"=STRLEN->"<<strlen(tempname)<<"<-STRLEN="; //CHECK THIS OUT!!!!
                                if (strlen(tempname) > slen) {
                                        std::cout << "Too big fullname\n";
                                        continue;
                                }
                                else {
                                        strcpy(st->fullname,tempname);
                                        --st_to_add;
                                }
                        }
                }
                break;
        }
}
Миниатюры
Не могу заставить правильно посчитать символы (strlen)  
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 14:08. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru