разрешить пользователям вводить несколько строк в командной строке с помощью C - PullRequest
1 голос
/ 14 сентября 2011

Я действительно не знаю о C. Итак, мои вопросы и идеи могут быть вводящими в заблуждение или смешными или смущающими. Пожалуйста, прости меня ..

В вопросе говорится, что программа должна получить пользовательский ввод из командной строки. входной текст будет иметь цифры, алфавиты и пробелы. у них тоже будет несколько строк ..

В примере программы используется <stdio.h> и, следовательно, printf и scanf.

Использование cin и cout не рекомендуется в соответствии с учебником. Чтобы использовать cin и cout, мне нужно <iostream>, но я не могу include <iostream>. Даже если бы я мог включить <iostream>, но я больше не могу include <stdio.h>.

Я также не могу использовать string. Я слышал, что C не позволяет использовать string, но я не совсем понимаю, почему.


Мой вопрос; когда вы просите пользователей ввести что-то с помощью printf("Enter your text: ");, они могут ввести только одну строку ... как только они нажмут Enter, программа получит это.

Можно ли в любом случае использовать scanf, чтобы позволить пользователям вводить несколько строк, набрав, например, Shift+Enter.

Поскольку string недоступен, должен ли я использовать массив char, такой как char inputText[999]? Это даст мне достаточно места?

Мои два вопроса; Как разрешить пользователям вводить несколько строк в командной строке и какой тип данных следует использовать для сохранения введенного текста?

Я гуглил, но они смешивают C ++ и C ..

Спасибо всем и еще раз, прошу прощения, если мой вопрос - пустая трата времени для вас ..

Привет всем, я сделал это .. но у меня есть только еще одна проблема ..

#include <stdio.h>
#include <stdlib.h>

int nc=0,nw=0,bs=0,c, nq=0, nl=0;
int main()
{
    printf("Text Analysis Program\n\n");
    printf("Enter your text:");
    while((c=getchar())!=EOF)
    {
        if( (c>='A' && c<='Z') || (c>='a' &&  c<='z') )
        {
            nc++;
        }
        else if( c>='0' && c<='9' )
        {
            nq++;
        }
        else if (c==' ')
        {
            nw++;
            bs++;       
        }
        else if (c=='\n')
        {
            nw++;
            nl++;
        }
    }
    printf("Number of characters: %d;\n",nc);
    printf("Number of words: %d;\n",nw);
    printf("Number of numerical quantities: %d;\n",nq);
    printf("Number of blank spaces: %d;\n",bs);
    printf("Number of lines entered: %d;\n",nl);
    exit(0);
}

В конце, после показа ответов, экран cmd сразу закрывается .. Я удалил exit(0) Он все тот же. Есть ли какие-нибудь команды для зависания экрана и появляется Press any key to continue

Ответы [ 2 ]

1 голос
/ 17 сентября 2011

Эти:

#include <iostream>
#include <string>
cin
cout

специфичны для C ++. Они просто не существуют в C. Помните, что C и C ++ - это два разных языка.

Тот факт, что ваше окно закрывается после завершения программы, является функцией системы разработки, которую вы используете. Если вы запустите программу из командной строки, этого не произойдет - или в вашей IDE может быть опция, позволяющая держать окно открытым, пока вы не закроете его явно. Но если вы не хотите этого делать, решение Дж.Ф. Себастьяна является хорошим.

Еще один совет: взгляните на функции isalpha() и isdigit() в <ctype.h>.

0 голосов
/ 17 сентября 2011

Просто добавьте еще один getchar() вызов:

#include <stdio.h>

int main() {
  printf("Press any key to continue. ");
  fflush(stdout);
  getchar();
  return 0;
}

Он фактически не возвращается, пока вы не введете полную строку или не достигнете EOF, но он должен быть достаточно хорошим.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...