Не происходит запись в файл - C (СИ) (79949)

Узнай цену своей работы

Формулировка задачи:

первая программа,которая из 64 сс переводит в 2сс,все работает,после этого по желаению юзера,записывает результат в текстовоя файл,что и не просиходит,выводит тольо 0....или же 1..в чем проблема?
#include <locale.h>
#include <string.h>
#include "windows.h"
#include <stdio.h>
#include <iostream>
using namespace std;
int main(){
 SetConsoleCP(1251);
 SetConsoleOutputCP(1251);
int i;
char str[256];
char buf[80];
char url[256];
char yn[80];
FILE *f; 
i=0;
cout<<"Введите текст:";
cin>>str;
while(str[i]){
   _itoa_s( (unsigned char)str[i], buf, 2);    
    printf( "%s", buf );
    i++;
}
 
printf( "\n" );
cout<<"Копировать результат в текстовой файл?Y\\N:";
cin>>yn;
switch(yn[0])
{
    case 'y': 
                cout<<"Введите URL адрес:"<<endl;
                cin>>url;
                f=fopen(url, "a");
                fputs("Ваш текст:", f);
                fputs(str, f);
                fputs("\nТекст в двоичном системе:", f);
                fputs(buf, f);
                fputs("\n\n-----------------------\n\n", f);
                cout<<"Удачно сохранено!";
                Sleep(1000);
                system("cls");
        break;
    case 'n':
        main();
        break;
}
main(); 
        return 0;
}
вотрая прогамма-гаоборот,переводит из2сс в 64сс...гемор в том что тоже выводит только 0...скажем записываю в консоли 11101101101101,это означает

vm

,выводит только 0...если только букву m или же v написать,то выводит его код,заключение:программа переводит только одну буква,как исправить?
#include "windows.h"
#include <iostream>
#include <string>
using std::cin;
using std::cout;
using std::endl;

using std::string;

int main()
{
        string str;
        cin >> str;

//////////////////////////////////////SYMBOLS
             if ( str == "1100000" )
                cout << '`';
 
              else if ( str == "1111110" )
                cout << '~';
 
              else if ( str == "101101" )
                cout << '-';
 
              else if ( str == "111101" )
                cout << '=';
 
              else if ( str == "1000000" )
                cout << '@';
 
              else if ( str == "100011" )
                  cout << '#';
 
              else if ( str == "100100" )
                cout << '$';
 
              else if ( str == "100101" )
                cout << '%';
 
              else if ( str == "1011110" )
                cout << '^';
 
              else if ( str == "100110" )
                cout << '&';
 
              else if ( str == "101010" )
                cout << '*';
 
              else if ( str == "101000" )
                cout << '(';
 
              else if ( str == "101001" )
                cout << ')';
 
              else if ( str == "1011111" )
                cout << '_';
 
              else if ( str == "101011" )
                cout << '+';
 
              else if ( str == "111100" )
                cout << '<';
 
              else if ( str == "111110" )
                cout << '>';
 
              else if ( str == "101100" )
                cout << ',';
 
              else if ( str == "101110" )
                cout << '.';
 
              else if ( str == "111111" )
                cout << '?';
 
              else if ( str == "101111" )
                cout << '//';
 
              else if ( str == "1111011" )
                  cout << '{';
 
              else if ( str == "1011011" )
                cout << '[';
 
              else if ( str == "1111101" )
                  cout << '}';
 
              else if ( str == "101011" )
                cout << ']';
 
              else if ( str == "111010" )
                  cout << ':';
 
              else if ( str == "111011" )
                cout << ';';
 
              else if ( str == "100010" )
                cout << '\"';
 
              else if ( str == "100111" )
                cout << '\'';
//////////////////////////////////////NUMBERS
              if ( str == "110001" )
                cout << '1';
 
              else if ( str == "100001" )
                cout << '!';
 
              else if ( str == "110010" )
                cout << '2';
 
              else if ( str == "110011" )
                cout << '3';
 
              else if ( str == "110100" )
                cout << '4';
 
              else if ( str == "110101" )
                cout << '5';
 
              else if ( str == "110110" )
                cout << '6';
 
              else if ( str == "110111" )
                cout << '7';
 
              else if ( str == "111000" )
                cout << '8';
 
              else if ( str == "111001" )
                cout << '9';
 
              else if ( str == "110000" )
                cout << '0';
//////////////////////////////////////БУКВЫ большие

              else if ( str == "1010001" )
                cout << 'Q';
 
else if ( str == "1010111" )
                cout << 'W';
 
else if ( str == "1000101" )
                cout << 'E';
 
else if ( str == "1010010" )
                cout << 'R';
 
else if ( str == "1010100" )
                cout << 'T';
 
else if ( str == "1011001" )
                cout << 'Y';
 
else if ( str == "1010101" )
                cout << 'U';
 
else if ( str == "1001001" )
                cout << 'I';
 
else if ( str == "1001111" )
                cout << 'O';
 
else if ( str == "1010000" )
                cout << 'P';
 
else if ( str == "1000001" )
                cout << 'A';
 
else if ( str == "1010011" )
                cout << 'S';
 
else if ( str == "1000100" )
                cout << 'D';
 
else if ( str == "1000110" )
                cout << 'F';
 
else if ( str == "1000111" )
                cout << 'G';
 
else if ( str == "1001000" )
                cout << 'H';
 
else if ( str == "1001010" )
                cout << 'J';
 
else if ( str == "1001011" )
                cout << 'K';
 
else if ( str == "1001100" )
                cout << 'L';
 
else if ( str == "1011010" )
                cout << 'Z';
 
else if ( str == "1011000" )
                cout << 'X';
 
else if ( str == "1000011" )
                cout << 'C';
 
else if ( str == "1010110" )
                cout << 'V';
 
else if ( str == "1000010" )
                cout << 'B';
 
else if ( str == "1001110" )
                cout << 'N';
 
else if ( str == "1001101" )
                cout << 'M';
 
//////////////////////////////////////БУКВЫ МАЛЕНЬКИЕ
 
              else if ( str == "1110001" )
                cout << 'q';
 
else if ( str == "1110111" )
                cout << 'w';
 
else if ( str == "1100101" )
                cout << 'e';
 
else if ( str == "1110010" )
                cout << 'r';
 
else if ( str == "1110100" )
                cout << 't';
 
else if ( str == "1111001" )
                cout << 'y';
 
else if ( str == "1110101" )
                cout << 'u';
 
else if ( str == "1101001" )
                cout << 'i';
 
else if ( str == "1101111" )
                cout << 'o';
 
else if ( str == "1110000" )
                cout << 'p';
 
else if ( str == "1100001" )
                cout << 'a';
 
else if ( str == "1110011" )
                cout << 's';
 
else if ( str == "1100100" )
                cout << 'd';
 
else if ( str == "1100110" )
                cout << 'f';
 
else if ( str == "1100111" )
                cout << 'g';
 
else if ( str == "1101000" )
                cout << 'h';
 
else if ( str == "1101010" )
                cout << 'j';
 
else if ( str == "1101011" )
                cout << 'k';
 
else if ( str == "1101100" )
                cout << 'l';
 
else if ( str == "1111010" )
                cout << 'z';
 
else if ( str == "1111000" )
                cout << 'x';
 
else if ( str == "1100011" )
                cout << 'c';
 
else if ( str == "1110110" )
                cout << 'v';
 
else if ( str == "1100010" )
                cout << 'b';
 
else if ( str == "1101110" )
                cout << 'n';
 
else if ( str == "1101101" )
                cout << 'm';        
        cout << endl;        
        system("pause");
        main();
return 0;
}

Решение задачи: «Не происходит запись в файл»

textual
Листинг программы
int main()
{
  string str;           // создаём строку для получения данных с консоли
  string temp="";       // строка - буфер
  int counter=0;        // счётчик слов. инициализируем 0
  cin >> str;           // получаем строку
 
  while (str.size()>=7*(counter+1))
  { // пока размер строки больше чем (размер слова умножить 
    // номер выделяемого слова) (7*(counter+1))
    
    // выделить подстроку из 7 символов, начиная с 7*counter символа
    temp=str.substr(7*counter,7 );
    Analysis(temp);    // проверить слово и вывести слово (там тока твой код)
    counter++;         // инкрементируем счётчик == переходим к следующему слову
  }
  
  system("pause");     // вывели дежурную фразу
  main();              // новая итерация
  return 0;
}

Объяснение кода листинга программы

В этом коде:

  1. Создаётся строка str для получения данных с консоли.
  2. Создаётся строка temp для использования в качестве буфера.
  3. Инициализируется переменная counter со значением 0.
  4. Получается строка str.
  5. В цикле while проверяется, достаточно ли размера строки str для выделения подстроки размером 7 символов, начиная с 7-кратного размера counter.
  6. Если условие выполняется, то выделяется подстрока temp размером 7 символов, начиная с 7-кратного размера counter.
  7. Функция Analysis вызывается для проверки и вывода слова temp.
  8. Переменная counter инкрементируется, чтобы перейти к следующему слову.
  9. По завершении цикла программа выводит дежурную фразу и делает новую итерацию, вызывая main().
  10. Программа возвращает 0, чтобы указать, что она успешно завершилась.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 3.889 из 5