Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.10.2011, 18:59   #1
Blari
 
Регистрация: 01.08.2011
Сообщений: 4
По умолчанию Строка символов

Уважаемые, помогите пожалуйста разобраться, не могу понять что не так в моей программе. Задача: ввести строку символов, если ее длина>8, удалить все буквы – A..Z. Вроде все работает, но на выходе получаю ерунду...
PHP код:
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <math.h>
#include <locale.h>
#include <string.h>
#include <ctype.h>

int main()
{
 
char *str,*str2;
 
int i,i2min,n,n1,len;
 
setlocale(LC_CTYPE"RUSSIAN");
 
printf("\nВведите размер строки: ");
 
scanf_s("%d", &n);
 
str = (char *)malloc((n+1)*sizeof(char));
 
str2 = (char *)malloc((n+1)*sizeof(char));
 
printf("Введите строку: ");
 
scanf("%s",str);
 
len=strlen(str); //определяю длинну строки
 
n1=n;
 if (
len>8) {
     for (
i=0i<ni++)
     {
        if (
isupper(str[i])==0//проверяю, принадлежит ли символ A..Z
        
{        i2=0;
                
str2[i2]=str[i]; /*если символ в нижнем регистре, то заношу его в строку str2. Я так понимаю что именно тут у меня и ошибка, но ее причины мне не известны.*/
                
i2++;
            
        }    
     }
 
printf("\nБыла строка %s \n",str);
 
printf("\nСтала строка %s "str2); //вывожу вторую строку
 
} else printf("Количество символов меньше восьми.");
 
 
free(str);
 
free(str2);
_getch();

Blari вне форума Ответить с цитированием
Старый 18.10.2011, 19:23   #2
An1ka
C++,DirectX/OpenGL
Форумчанин
 
Регистрация: 09.01.2011
Сообщений: 422
По умолчанию

Код:
i2=0;
Вы пишете все символы в нулевой элемент массива
По этому и записывается последний символ 't' в последовательности. А дальше просто мусор выводится, потому что строка должна оканчиваться на символ '\0'.
An1ka вне форума Ответить с цитированием
Старый 18.10.2011, 20:39   #3
Blari
 
Регистрация: 01.08.2011
Сообщений: 4
По умолчанию

Цитата:
Сообщение от An1ka Посмотреть сообщение
Код:
i2=0;
Вы пишете все символы в нулевой элемент массива
По этому и записывается последний символ 't' в последовательности. А дальше просто мусор выводится, потому что строка должна оканчиваться на символ '\0'.
Вот блин, действительно, не увидел
Спасибо.
Blari вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дана последовательность символов (строка). Группу символов, разделенную с одной или обеих сторон пробелам viper1941 Паскаль, Turbo Pascal, PascalABC.NET 1 14.04.2011 08:46
Строка символов cranxx Общие вопросы C/C++ 2 04.12.2010 17:49
Строка символов grimm_jow Общие вопросы по Java, Java SE, Kotlin 3 14.06.2010 11:56
Строка символов. Паскаль. HaTyCuk Помощь студентам 3 18.12.2009 23:41
C++,строка символов Alik-Soldier Помощь студентам 1 01.05.2009 16:57