Форум программистов, компьютерный форум, киберфорум
C++
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/9: Рейтинг темы: голосов - 9, средняя оценка - 4.67
Frankies
1

Д.Либерти С++ за 21 день. strncpy(...) Листинг 8.11

26.03.2011, 16:17. Просмотров 1846. Ответов 2
Метки нет (Все метки)

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
#include<iostream>
#include<ctype.h>
#include<string.h>
using namespace std;
bool GetWord(char *string, char *word, int& wordOffset);
int main()
{
    const int buffersize=255;
    char buffer[bufferSize+1];
    char word[bufferSize+1];
    int wordOffset = 0;
    cout<<"Enter a string: ";
    cin.getline(buffer, bufferSize);
    while(GetWord(buffer, word, wordOffset))
    {
        cout<<"Got this word: :"<<word<<endl;
    }
    return 0;
}
bool GetWord(char *string, char *word, int& wordOffset)
{
    if(!string[wordOffset])
        return false;
    char *p1, *p2;
    p1=p2=string+wordOffset;
    for(int i=0;i<(int)strlen(p1) && !isalnum(p1[0]);i++)
        p1++;
    if(!isalnum(p1[0]))
        return false;
    p2=p1;
    while(isalnum(p2[0]))
        p2++;
    int len = int (p2 - p1);
    strncpy (word,p1,len);
    word[len]='\0';
    for(int i=int(p2-string); i<(int)strlen(string) && !isalnum(p2[0]); i++)
        p2++;
    wordOffset=int(p2-string);
    return true;
}
Компилировал в Visual Studio 2010.
strings_2.cpp(34): warning C4996: 'strncpy': This function or variable may be unsafe. Consider using strncpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
d:\program files\microsoft visual studio 10.0\vc\include\string.h(188): см. объявление "strncpy"
Помогите понять, пож, в чём проблема. Вводил вроде точно с книги.
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.03.2011, 16:17
Ответы с готовыми решениями:

Либерти Д. Освой С++ за 21 день
Для изучения с++ некоторые знакомые рекомендовали (а некоторые не рекомендовали) книгу Либерти Д....

Добрый день! Исправте, пожалуйста. Дан листинг программы, где заданы два массива
Здравствуйте! Помогите, пожалуйста. Дан листинг программы, где заданы два массива. Сделайте,...

Cамый краткий листинг - самый подробный листинг.
Здравствуйте. Надо провести трансляцию программы SIMPLE.ASM с использованием TASM.EXE и...

Разгадать мысли Либерти
Помогите, пожалуйста, понять смысл использования 36-ой строки в этом листинге. #include...

2
В астрале
Эксперт С++
8022 / 4779 / 654
Регистрация: 24.06.2010
Сообщений: 10,550
26.03.2011, 17:04 2
Frankies, От этого ворнинга не избавится, если юзать strncpy в MSVS. Так что советую подзабить.
1
Эксперт С++
7171 / 3229 / 77
Регистрация: 17.06.2009
Сообщений: 14,166
26.03.2011, 17:15 3
ну точно не избавиться, как же ...
Ответ написан прямо тут же !
нужно определить макрос _CRT_SECURE_NO_WARNINGS !
Причем до включения файлов с помощью include
типа так

C++
1
2
#define _CRT_SECURE_NO_WARNINGS 1
#include <iostream>
Добавлено через 57 секунд
А вообще это Microsoft козлы - они везде пихают strncpy_s() и другие такие же функции

Хотя нормальные программисты используют strlcpy() вместо strncpy()
2
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.03.2011, 17:15

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Либерти,одномерный массив
Здравствуйте,помогите пожалуйста с задачей.Преподаватель дал методичку и уехал. В одномерном...

Джесс Либерти. Можно изучать?
Решил попробовать начать изучать С++. Нашел старенькую книгу Джесса Либерти &quot;С++ за 21 день.Третье...

Определить день недели, на который приходится день с датой d (день), m (месяц)
Считая, что год не високосный и его 1 января приходится на день недели wd1, определиь wd -день...

Пример из книги Джесс Либерти не работает(указатели)
Занимаюсь С++ по книге Джесс Либерти &quot;Освой самостоятельно С++ за 21 день&quot; В С++ новичок. На 8-ом...

Strncpy
Одинаково неправильно работают следующие 2 кода: #include &lt;stdio.h&gt; #include &lt;string.h&gt; int...

Strncpy
Напишите пожауйста на С аналог функции Strncpy


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.