2014-02-19 3 views
0

Итак, для моего класса вычислительной техники 162 нам предоставляется назначение простого текстового редактора, но нам разрешено использовать cstrings/массивы символов, поэтому без строк. Тем не менее, нам разрешено использовать класс cstring для выполнения определенных функций. Текстовый редактор должен исправить небольшие ошибки, например: если после периода есть только одно место, добавьте второй; если простое слово, такое как «the», написано неправильно (например, «teh»), исправьте его автоматически; если начальная буква предложения не капитализируется, используйте ее. Теперь у меня есть функция, чтобы исправить пробелы, работающие просто отлично, но функция проверки «teh» и изменения ее на «the» отключает меня. Вот моя программа до сих пор:Использование Strncpy для создания простого текстового редактора в C++

enter_paragraph(char paragraph[]) 
{ 
    cout <<"Enter a paragraph:"; 
    cin.getlin(paragraph,300,"#"); 
    cout <<"Here is your paragraph: " <<endl<<paragraph; 
} 

check_spaces(char paragraph[],char new_para[]) 
{ 
    int l = strlen(paragraph); 
    int i = 0; 
    int n = 0; 
    while(i<l) 
    { 
     new_para[n] = paragraph[i]; 
     n++; 
     if(paragraph[i] == '.') 
     { 
      if(paragraph[i+1] == ' ') 
      { 
       if(paragraph[i+2] != ' ') 
       { 
        new_para[n] = ' '; 
        n++; 
        new_para[n] = ' '; 
        n++; 
       } 
      } 
     } 
     i++; 
    } 

} 

check_the() 
{ 
    int l = strlen(new_para); 
    int i = 0; 
    char 
    while(i<l) 
    { 
     if(new_para[i] == 't') 
     { 
      if(new_para[i+1] == 'e') 
      { 
       if(new_para[i+2] == 'h') 
       { 
        strncpy(i+ 
} 

check_caps() 
{ 
} 

int main() 
{ 
    char paragraph[300]; 

/* prompt user to enter a paragraph (no more than 300 characters) */ 
    enter_paragraph(paragraph); 
    cout <<"Here is your paragraph: " <<endl<<paragraph; 

/* user enters paragraph; program stores it */ 

/* check paragraph for two spaces after each paragraph; if there aren't, then change it */ 
    check_spaces(paragraph); 

/* check paragraph for misspelling of "the"; if user typed "teh," change it to "the" */ 
    check_the(); 

/* check paragraph for a capitalized first letter after each period; if it is lowercase, change it */ 
    check_caps(); 

/* и т.д. и т.п. выхода новый исправленный пункт (как новый массив, предпочтительно) */ }

Я знаю, что есть некоторые ошибки в основном но я не беспокоюсь о них прямо сейчас. Мне просто нужна помощь с функцией check_the. Как я могу использовать strncpy для выполнения того, что мне нужно делать? Если есть лучший способ, который мне не хватает, что это? Спасибо.

+0

Что делать, чтобы на самом деле делать проверки? – Nowayz

+0

также следует пометить C, если вы можете использовать только конструкции и функции C – Nowayz

+0

, он проверяет, есть ли какие-либо экземпляры, в которые пользователь помещает только одно место после периода в конце предложения. Если они это сделали, он добавляет второе пространство, так что всегда есть два пробела после периода. Не беспокойтесь об этом; он работает уже. – hhoward

ответ

2

Почему вы хотите использовать «strncpy»? Вы можете сделать простую замену, создав newpara [i + 1] = newpara [i + 2]; Newpara [i + 2] = 'e';

+0

ничего себе .... если это сработает, тогда я буду чувствовать себя довольно глупо. Позвольте мне попробовать. – hhoward

+0

это сработало! Я официально чувствую себя глупо. Спасибо! – hhoward

+0

Не будьте суровы на себе. Я бы рекомендовал прочитать реализацию некоторых из основных методов. Посмотрите, как они работают в фоновом режиме. В конце. Его все об основах;) –

Смежные вопросы