Хелпикс

Главная

Контакты

Случайная статья





Скоро сессия!. Скоро сессия!. Скоро сессия!. Примечание 2. Программист должен сам заботиться о том, чтобы в строке-приемнике (s1) хватило место для строки-источника (s2), и о том, чтобы строка всегда имела нуль-символ.. Выход за пределы строки и отсутстви



Скоро сессия!

Скоро сессия!

Скоро сессия!

 

Обращение к функции strncpy имеет вид: strncpy(s1,s2,n); Функция копирует не более n символов из строки s2 в строку s1 и возвращает s1. При этом, если длина исходной строки (s2) превышает или равна  n, нуль-символ в конец строки s1 не добавляется. В противном случае строка s1 дополняется нуль-символами до n-го символа. Если строки перекрываются, поведение не определено.

 Пример 2.

/* Копирование строки s2 в строку s1 c помощью strncpy */

#include<stdio.h>

#include<string.h>

#include<conio.h>

void main()

{

int n;                           // Длина строки

char s2[20]="Скоро сессия!";    //Исходная строка

n=strlen(s2)+1;               //Длина s1

//char *s1=new char[n];         //Строка - копия s1

char s1[20];

strncpy(s1,s2,n);            //Копирование s2 в s1

puts(s2);                     // Вывод s2

puts(s1);                   //Вывод s1

puts(strncpy(s1,s2,n));         //strncpy возврващает s1

getch();

}

 

Результат выполнения программы такой же, как и в примере 1.

Примечание 1. В рассмотренных примерах использована функция strlen(s), возвращающая фактическую длину строки s, не включая нуль-символ.

Примечание 2. Программист должен сам заботиться о том, чтобы в строке-приемнике (s1) хватило место для строки-источника (s2), и о том, чтобы строка всегда имела нуль-символ.

Выход за пределы строки и отсутствие нуль-символа является распространенными причинами ошибок в программах обработки строк.

1.6  Преобразование строки в число

Преобразование строк в числа можно выполнить с помощью функций atoi, atol, atof. Обратные преобразования - с помощью функции sprintf.

Функция atoi(s) преобразует строку, содержащую символьное представление целого числа в соответствующее целое число. Признаком конца числа служит первый символ строки, который не может быть интерпретирован как принадлежащий целому числу. Если преобразование не удалось, возвращает 0.

Функция atol(s) преобразует строку, содержащую символьное представление длинного целого числа в соответствующее целое число.

Функция atof(s) преобразует строку, содержащую символьное представление вещественного числа в соответствующее вещественное число двойной точности.

Для использования функций atoi(s)atol(s) и atof(s) к программе следует подключить заголовочный файл <stdlib.h> предложением #include <stlib.h>

 

Пример. Данные об участнике соревнований (номер участника, рост и вес) содержатся в строке символов. Вывести номер, рост и вес.

 

/* Преобразование строки в число */

#include<stdio.h>

#include<string.h>

#include<stdlib.h>

#include<conio.h>

void main()

{

char s[]="10) Рост – 162 см., вес – 63.4кг";     //Строка

int n;                                           // Целое число

long h;                                          // Длинное целое

double w;                                        //Вещественное число

 n=atoi(s);                                       //Преобразование в целое

 h=atol(&s[11]);                           //Преобразование в длинное целое

 w=atof(&s[26]);                      //Преоброзование в вещественное число

printf("Участник # %d Его рост %ld и вес %lf\n",n,h,w);

puts("Исходная строка");

 puts(s);

puts("Первая подстрока");

 puts(&s[11]);

puts("Вторая подстрока");

 puts(&s[26]);

getch();

}

 

 

Результат выполнения программы:

 



  

© helpiks.su При использовании или копировании материалов прямая ссылка на сайт обязательна.