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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.12.2016, 01:13   #1
Unknown_friend
Пользователь
 
Регистрация: 19.11.2016
Сообщений: 15
По умолчанию Conditional jump or move depends on uninitialised value(s)

Здравствуйте, подскажите в чем ошибка:

Код:
        #include <stdio.h>
	#include <stdlib.h>
	#include <string.h>

	int main(int argc, char *argv[])
	{
	 char *txt1 = malloc(1*sizeof(char)), *txt2 = malloc(1*sizeof(char));
	 int i = 0, j=0, ch=0;
	 while(!feof(stdin)){
	 	  if(!scanf("%c", &txt1[i])) ch++;
		  if((int)txt1[i]>90){
		    if((int)txt1[i]<97 || (int)txt1[i]>122) ch++;  
		   }
		  if((int)txt1[i]<65 && txt1[i]!= '\n' && !feof(stdin)) ch++; 
		  if(txt1[i] == '\n'){
		    while(!feof(stdin)){
		         if(!scanf("%c", &txt2[j])) ch++;
		         if((int)txt2[j]>90){
		           if((int)txt2[j]<97 || (int)txt2[j]>122) ch++;
		          }
		         if((int)txt2[j]<65 && txt2[j]!= '\n' && !feof(stdin)) ch++;
		           j++; 
		           txt2 = (char*)realloc(txt2, (j+1)*sizeof(char));    
		        }
		    }
		  i++; 
		  txt1 = (char*)realloc(txt1, (i+1)*sizeof(char));   
		 }
		 if(ch!=0){
		   free(txt1);
		   free(txt2);
		   return 100;
		  }
		 if(strlen(txt1)!=strlen(txt2)){
		   free(txt1);
		   free(txt2);
		   return 101;
		  }
     free(txt1);
     free(txt2);
	 return 0;
	}
Когда пропускаю через valgrind выдает 5 ошибок:Conditional jump or move depends on uninitialised value(s).
Заранее спасибо!

Последний раз редактировалось Alex11223; 01.12.2016 в 01:17.
Unknown_friend вне форума Ответить с цитированием
Старый 01.12.2016, 09:35   #2
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,330
По умолчанию

Наверно потому что malloc/realloc могут вернуть NULL
waleri вне форума Ответить с цитированием
Старый 01.12.2016, 22:55   #3
Son Of Pain
Участник клуба
 
Регистрация: 23.12.2010
Сообщений: 1,129
По умолчанию

strlen пытается найти в твоих массивах нулевой символ (признак конца строки). Не находит и уходит в неинициализированную память.
Son Of Pain вне форума Ответить с цитированием
Старый 01.12.2016, 23:04   #4
Unknown_friend
Пользователь
 
Регистрация: 19.11.2016
Сообщений: 15
По умолчанию

Спасибо за ответы! Это -2 ошибки, а вот откуда еще 3?
Unknown_friend вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка Relative jump out of range vsrmis Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 26.05.2011 00:41
jump destination too far Ra88 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 5 13.10.2010 06:37
не работает m_pSet->Move(i); primeplus Общие вопросы C/C++ 0 28.09.2009 19:14
Процедура MOVE iiunbreakableii Общие вопросы Delphi 1 15.09.2009 16:35