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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.04.2012, 21:50   #1
McFrey
Форумчанин
 
Аватар для McFrey
 
Регистрация: 15.10.2011
Сообщений: 306
По умолчанию Cи. Переменная типа char

Можно ли строковой переменной в Си присвоить какие-то символы внутри программы? И если да то как это осуществить?
Например...
Код:
char rezult[15];
.....
 if (условие )
       printf("blablabla");
       rezult = что нибудь присвоить ну например фразу "равны"
      else 
       printf("blablabla");
Как осуществить это присвоение?
Если твоя программа выполняет мистические действия, значит, ты сделал что-то невероятно тупое...

Последний раз редактировалось McFrey; 13.04.2012 в 21:54.
McFrey вне форума Ответить с цитированием
Старый 13.04.2012, 22:11   #2
Asdprom
Форумчанин
 
Регистрация: 05.02.2011
Сообщений: 119
По умолчанию

Вопрос не понял.

чтобы принять в переменную строку надо выполнить такие действия:
Код:
char a [ 100 ];

std::cin>>a; // #include <iostream> далее вводим строку с тети Клавы и нажимаем Ввод.
символ -
Код:
char a;
cin>>a;
для того чтобы в сделать это внутри программы -

result = " равны ";

Ответил на все возможные вопросы по этой теме. Если что - то не так - извиняйте)
Asdprom вне форума Ответить с цитированием
Старый 13.04.2012, 22:18   #3
McFrey
Форумчанин
 
Аватар для McFrey
 
Регистрация: 15.10.2011
Сообщений: 306
По умолчанию

Asdprom вот код целиком, если не сложно скажи в чем ошибка. Программа сравнивает содержимое двух текстовых файлов.
Код:
#include<stdio.h>
int main()
{ 
 char sim_1, sim_2;   
 char file_name_1[20], file_name_2[20], itog_name[20], rezult;
 FILE *one, *two, *itog;
  printf("Путь к 1 файлу: \n");
  scanf("%s", file_name_1); 
  if ((one=fopen(file_name_1,"r"))==NULL)
    printf("Файл не найден\n");
  else
 {
  printf("Путь ко 2 файлу: \n");
  scanf("%s", file_name_2);
  if ((two=fopen(file_name_2,"r"))==NULL)
    printf("Файл не найден\n"); 
  else  
  { 
    while (((sim_1=getc(one))!=EOF)&((sim_2=getc(two))!=EOF))
    {    
      if ((sim_1!=sim_2) | (feof(one) && feof(two)))
       rezult = " не равны " ;
      else 
       rezult = " равны " ;
    }// конец while   
    printf("Файлы - %i \n",rezult);
    printf("Имя файла для сохранения результата:\n");
    scanf("%s", itog_name);
    itog=fopen(itog_name,"a");
    fprintf(itog,"Файлы - ",rezult);
    fclose(itog);     
    fclose(one);
    fclose(two);
   }//конец else 2
 }//конец else 1
}
result = " равны "; компилятор ругается
Если твоя программа выполняет мистические действия, значит, ты сделал что-то невероятно тупое...
McFrey вне форума Ответить с цитированием
Старый 13.04.2012, 22:28   #4
Asdprom
Форумчанин
 
Регистрация: 05.02.2011
Сообщений: 119
По умолчанию

Функция strcmp

#include <string.h>
int strcmp(const char *str1, const char *str2);

Функция strcmp() сравнивает в лексикографическом порядке две строки и возвращает целое значение, зависящее следующим образом от результата сравнения.
Значение Результат сравнения строк
Меньше нуля str1 меньше str2
Нуль str1 равен str2
Больше нуля str1 больше str2
Пример

Следующую функцию можно использовать для проверки пароля. В случае неудачи она возвращает нуль, а при успешном выполнении — единицу.
Код:
int password(void)
{
  char s[80];

  printf("Введите пароль: ");
  gets(s);

  if(strcmp(s, "pass")) {
    printf("Неверный пароль\n");
    return 0;
  }
  return 1;
}
для сравнения строк надо пользоваться функцией strcmp.

для вывода на экран printf или cout<< result;

printf ( " не равны" );
printf ( " равны" );
cout<<"равны";
cout<<" не равны";
Asdprom вне форума Ответить с цитированием
Старый 13.04.2012, 22:31   #5
Asdprom
Форумчанин
 
Регистрация: 05.02.2011
Сообщений: 119
По умолчанию

rezult должен быть типа char rezult [25];
Asdprom вне форума Ответить с цитированием
Старый 13.04.2012, 22:32   #6
McFrey
Форумчанин
 
Аватар для McFrey
 
Регистрация: 15.10.2011
Сообщений: 306
По умолчанию

ну а если в файле несколько строк?...мне то нужно два различных файла сравнить притом они могут быть абсолютно разные по длине....как это связать со строками?
Если твоя программа выполняет мистические действия, значит, ты сделал что-то невероятно тупое...
McFrey вне форума Ответить с цитированием
Старый 13.04.2012, 22:36   #7
Asdprom
Форумчанин
 
Регистрация: 05.02.2011
Сообщений: 119
По умолчанию

Я думаю, что надо при помощи Win32 API определить длины файлов и тогда создать массив символов длины подходящей для этого файла.
Asdprom вне форума Ответить с цитированием
Старый 13.04.2012, 22:37   #8
McFrey
Форумчанин
 
Аватар для McFrey
 
Регистрация: 15.10.2011
Сообщений: 306
По умолчанию

а нельзя ли просто посимвольным сравнением обойтись как я делаю?
Если твоя программа выполняет мистические действия, значит, ты сделал что-то невероятно тупое...
McFrey вне форума Ответить с цитированием
Старый 13.04.2012, 22:39   #9
Asdprom
Форумчанин
 
Регистрация: 05.02.2011
Сообщений: 119
По умолчанию

Конечно можно!
Asdprom вне форума Ответить с цитированием
Старый 13.04.2012, 22:43   #10
Asdprom
Форумчанин
 
Регистрация: 05.02.2011
Сообщений: 119
По умолчанию

Вам надо только добавить к rezult квадратные скобки с количеством байт в строке.

А так у вас все нормально!
Asdprom вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Возможно ли в массив типа char записать первым элементом значение переменной типа float? Green Gin Общие вопросы C/C++ 2 05.12.2011 01:50
переменная char genrix Общие вопросы C/C++ 9 20.02.2011 18:23
Переменная типа TADOQuery PeaceDuke Общие вопросы C/C++ 3 21.04.2010 11:08
Переменная типа Char Sarumjan Общие вопросы C/C++ 4 10.01.2010 00:34
Запись числа типа инт в ячейку двумерного массива типа char AxenicX Помощь студентам 1 25.09.2009 00:35