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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.02.2015, 13:05   #1
nwhta
Форумчанин
 
Регистрация: 30.08.2013
Сообщений: 153
По умолчанию вопрос по массивам на С

Всем привет!
пишу вот проги для себя, практикуюсь перед экзаменами.............
почему то если ввожу массив:
Niko and Mom
то программа считает что первое слово это вся заполненная память
выяснил что виноват \0 в конце слова, вопрос в том к вам почему оно там ставится?
Код:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int checkLowerLetters(char *p)
{
	int flag = 0;
	char *ptr = p;
	while (*ptr)
	{
		if (*ptr >= 'a' && *ptr <= 'z')
		{
			flag = 0;
		}
		flag = 1;
	}
	return flag;
}
int checkLen(char *ptr)
{
	char *p = ptr;
	int cnt = 0;
	while (*p)
	{
		if (*p == ' ')
		{
			p++;
			cnt++;
			continue;
		}
		cnt++;
		p++;

	}
	printf("cnt is: %d\n", cnt);
	return cnt;
}

char * init_f()
{
	char *str, *p;
	int n;
	printf("Enter the length you want to be created\n");
	scanf("%d", &n);
	n++;
	str = (char*)malloc(n * sizeof(char));
	printf("Enter your string\n");
	scanf("%s", str);
	p = str;
	while (*p)
	{
		p++;
	}
	return str;
}
void main()
{
	char *ptr;
	int n;
	int flag;
	ptr = init_f();
	n = checkLen(ptr);
	flag = checkLowerLetters(ptr);
}
больше знаю, лучше сплю)
nwhta вне форума Ответить с цитированием
Старый 11.02.2015, 14:44   #2
challengerr
Участник клуба
 
Аватар для challengerr
 
Регистрация: 30.07.2008
Сообщений: 1,609
По умолчанию

Потому что пробел считается окончанием ввода.
"SPACE.THE FINAL FRONTIER.This's a voyage of starship Enterprise. It's 5-year mission to explore strange new worlds,to seek out new life and civilizations,to boldly go where no man has gone before"
challengerr вне форума Ответить с цитированием
Старый 11.02.2015, 16:02   #3
nwhta
Форумчанин
 
Регистрация: 30.08.2013
Сообщений: 153
По умолчанию

Цитата:
Сообщение от challengerr Посмотреть сообщение
Потому что пробел считается окончанием ввода.
окончанием ввода массива считается \0 разве нет?
больше знаю, лучше сплю)
nwhta вне форума Ответить с цитированием
Старый 11.02.2015, 16:15   #4
challengerr
Участник клуба
 
Аватар для challengerr
 
Регистрация: 30.07.2008
Сообщений: 1,609
По умолчанию

Простейшая программа для проверки:
Код:
#include <stdio.h>

void main()
{
char str[20];
scanf("%s", str);
str[19]='\0';
printf("%s", str);
}
Вывод программы :


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

На сайте http://www.realcoding.net/articles/f...ntf-scanf.html написано, что нужно использовать функцию gets вместо scanf для считывания с пробелами
"SPACE.THE FINAL FRONTIER.This's a voyage of starship Enterprise. It's 5-year mission to explore strange new worlds,to seek out new life and civilizations,to boldly go where no man has gone before"
challengerr вне форума Ответить с цитированием
Старый 11.02.2015, 16:23   #5
nwhta
Форумчанин
 
Регистрация: 30.08.2013
Сообщений: 153
По умолчанию

Цитата:
Сообщение от challengerr Посмотреть сообщение
Простейшая программа для проверки:
Код:
#include <stdio.h>

void main()
{
char str[20];
scanf("%s", str);
str[19]='\0';
printf("%s", str);
}
Вывод программы :


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

На сайте http://www.realcoding.net/articles/f...ntf-scanf.html написано, что нужно использовать функцию gets вместо scanf для считывания с пробелами
тупая и грубей шея ошибка, спасибо за обьяснения
больше знаю, лучше сплю)
nwhta вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вопрос по массивам hideousset8 Общие вопросы C/C++ 4 25.10.2012 14:29
Вопрос по массивам КМ1978 Visual C++ 23 06.08.2010 18:46
вопрос по массивам souwOw Помощь студентам 0 24.10.2009 23:02
вопрос по массивам peq Microsoft Office Excel 2 15.10.2009 18:52