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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.07.2013, 16:53   #1
Миасс
Пользователь
 
Регистрация: 02.07.2013
Сообщений: 13
Вопрос код в одном проекте работает,в другом нет

Добрый вечер.у меня возникла такая проблема:я писала функцию по удалению оценок в одном проекте (пишу на Visual Studio 2012),а вся программа(она довольно большая) в другом проекте,так как она также состоит из различных функций.Когда я вставила эту функцию в проект всей прог,то она не работает,а в отдельном проекте работает.В начале я объявляю массив
Код:
 char dobr[100];
для записи в него вводимой строки с клавиатуры.затем открываю нужные мне файлы, а потом
Код:
printf("Введите фамилию имя отчество студента | номер группы через пробел: ");
 gets(dobr);
 	x=strlen(dobr);
в проекте,где только одна эта функция,всё работает,а в общем проекте пишет,когда я делаю отладку,что х=0,то есть он мне в dobr забивает конец строки..помогите разобраться пожалуйста
Миасс вне форума Ответить с цитированием
Старый 08.07.2013, 17:34   #2
Igor95
Форумчанин
 
Регистрация: 03.01.2013
Сообщений: 388
По умолчанию

Возможно, что-то не вяжется мужду функцией и кодом, куда вы эту функцию включаете.
Может быть выложите код вашей функции и то, как вы ее вызываете.
Igor95 вне форума Ответить с цитированием
Старый 08.07.2013, 17:41   #3
Миасс
Пользователь
 
Регистрация: 02.07.2013
Сообщений: 13
По умолчанию

вот код моей функции
Код:
void delo()
{
     setlocale(LC_ALL, "Russian");
    system("cls");  // Очистка экрана
        
    int i =1;
	int x,y=0;
	char j=0;
    char s[200];
	char dobr[100];
	FILE *t, *nf;
    t = fopen("D:\\программирование\\прога\\tenis\\tenis\\student.txt", "rt+");//открываю исходный текстовый файл
    if(t == NULL)
    {
        printf("Ошибка при открытии файла.\n");
        system ("pause");
        exit(1);
    }
    
    nf = fopen ("stud.txt", "wt+");//создаю новый файл для перезаписи в него строк
	 
 printf("Введите фамилию имя отчество студента | номер группы через пробел: ");
 gets(dobr);
 	x=strlen(dobr);
    while(feof(t)==NULL)
    { y=0;
       fgets(s,200,t);
	   
	   for (i=0;i<=x;i++)
	   if (dobr[i]==s[i]) y++;
	   
	   if (y==x) 
		{
			
			for (i=0;y<2;i++)
			if (s[y+1]=='|') y++;
			s[y+2]='\0';
			
			strncpy(s,dobr,sizeof dobr);
			
			
	     }
	   fputs("\n",nf);
	   fputs(s,nf);
		

	   s[0]='\0';
	}
	
	 fclose(t);
	 fclose(nf);
			
    
}
а в самом начале моего я объявляю её,т.е
Код:
 void delo();
вот головная функция,где я вызываю все остальные
Код:
void main()
{
	
	FILE*t;
	setlocale(LC_ALL, "Russian");
	int choose;		// Выбранный пункт меню
	system("cls");	// Очистка экрана
	// Основной цикл работы программы
	while (1)
	{
		setlocale(LC_ALL, "Russian");
		// Выбор пункта меню
		choose = menu();
		// В зависимости от выбранного пункта делаем:
		switch (choose)
		{
		case 1:
			
			text ();
			
			
			break;
		case 2:
			int a1;
			while(1)
			{
				printf("1-Удаление студента.2-Добавление студента.3-Удаление оценок.4-Добавление оценок.5-Выход  ");
				scanf("%d",&a1);
				switch(a1)
				{
				case 1:
					del();
					break;
				case 2:
					add();
					break;
				case 3:
					delo();// вот эта функция не работает
					break;
				case 4:
					add_ocenki();
					break;
				case 5:
					// Выходим
					exit(0);
												
				}
				
			}		
			break;
		case 3:
			gruppa();
			break;
		case 4:
			// Выходим
			exit(0);
			
		}
	}
	return;
}
не понимаю,что не так..
Миасс вне форума Ответить с цитированием
Старый 08.07.2013, 18:08   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Попытки пройти пошаговку отладчиком были?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 08.07.2013, 18:19   #5
Миасс
Пользователь
 
Регистрация: 02.07.2013
Сообщений: 13
По умолчанию

да-делала.в том проекте,где отдельно эта функция,после введения строки с фамилией именем отчеством | номером группы,то в х записывалась длина этой строки.то есть всё дальше работает.а вот в общем проекте на экране появляется запись "Введите фамилию имя отчество студента | номер группы через пробел: " и я даже не могу ничего ввести,символы не появляются на экране и поэтому потом х=0 и не идет дальше
Миасс вне форума Ответить с цитированием
Старый 08.07.2013, 18:47   #6
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,289
По умолчанию

Экстрасенс подсказывает:
scanf("%d",&a1); при этом, ввод Вы заканчиваете нажатием Enter
происходит вызов delo
gets(dobr); "забирает" из буфера ввода перенос на новую строку, который не пишется в dobr и завершает работу функции gets
Получается: dobr пуст, ввод закончен
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Старый 08.07.2013, 18:59   #7
Миасс
Пользователь
 
Регистрация: 02.07.2013
Сообщений: 13
По умолчанию

BDA,но ведь у меня ввод строки и нужно именно всю строку записать в массив.а при scanf до пробела,у меня там ввод с пробелами((((
Миасс вне форума Ответить с цитированием
Старый 08.07.2013, 19:18   #8
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,289
По умолчанию

Попробуйте scanf("%d\n",&a1); (может быть поможет).
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Старый 08.07.2013, 19:30   #9
Миасс
Пользователь
 
Регистрация: 02.07.2013
Сообщений: 13
По умолчанию

scanf здесь не поможет.
Миасс вне форума Ответить с цитированием
Старый 08.07.2013, 19:58   #10
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,289
По умолчанию

Я предлагаю заменить scanf("%d",&a1); на scanf("%d\n",&a1);.

UPD
Исправил так:
Оставил scanf("%d",&a1);
Вместо gets(dobr); написал getchar();gets(dobr);
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )

Последний раз редактировалось BDA; 08.07.2013 в 20:22.
BDA на форуме Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Delphi 7 Взаимное прилипание\отлипание форм в одном проекте Dj_SheLL Помощь студентам 13 06.07.2015 17:52
Eclipse две программы в одном проекте vovik93 Общие вопросы по Java, Java SE, Kotlin 0 18.07.2012 15:16
Общие сохранение форм в одном проекте Vadja-Son Общие вопросы Delphi 6 03.02.2012 15:23
Delphi 7. Почему на одном компе содержимое Image1.Canvas выводится на принтер, а на другом нет? KarlMarks Помощь студентам 0 11.12.2011 23:01
C#,J#,Assembler в одном проекте. Tatarin_86 Помощь студентам 0 31.03.2010 22:10