Nano Hash - криптовалюты, майнинг, программирование

Печать предложения на C слово за словом без использования string.h

В настоящее время я учусь программировать на C. В качестве дополнительной практики мой учитель дал мне несколько задач. Вот в чем моя проблема, я должен использовать это в своей программе:

 void strSplitTokens (char *s1, char s2[][], int *numWords);

вот остальная часть проблемы: Вызов strSplitTokens разбивает строку s1 на слова, затем каждое слово сохраняется в отдельном массиве символов, а все строки сохраняются в одном массиве символов. Кроме того, он сохраняет количество слов, используя указатели в numWords. напечатайте строки в main следующим образом:

For(i=0;i<numWords;i++) printf("%s\n",s2[i]);

Если я запущу его и дам предложение типа Мне нравится программировать, мне нужно, чтобы оно вывело:

I

Нравиться

Программирование

Моя главная проблема в том, что мне сказали не использовать string.h, я немного не понимаю, как это сделать без него. Любые советы и рекомендации будут с благодарностью.

То, что у меня есть до сих пор, это в основном макет кода, который не имеет смысла:

#include <stdio.h>
void strSplitTokens (char *s1, char s2[][], int *numWords);
int main()
{
    printf("Enter a sentence: ");
    strSplitTokens();

 For(i=0;i<numWords;i++) 
{
        printf("%s\n",s2[i]);
}
    return 0;
}
void strSplitTokens (char *s1, char s2[][], int *numWords);
{
    char s1;
    scanf("%s",&s1);
    if( s1 != '\n')
    {
        strSplitTokens();

    }
}
27.11.2012

  • Пожалуйста, напишите, какой код у вас есть. 27.11.2012
  • Вероятно, вам следует сделать так, пройтись по строке, когда вы встретите буквенно-цифровой символ, начните с помещения этого символа во временный массив и увеличения счетчика, сделайте это для каждого символа, пока не найдете пробел, теперь malloc(sizeof(char)*(count+1)) и скопируйте свое слово в новое пространство, сделайте это для каждого слова. 27.11.2012
  • Вы вызываете strSplitTokens из strSplitTokens (рекурсия). Я почти уверен, что ты не хочешь этим заниматься. 27.11.2012
  • @Gille У меня очень мало кода. Я изо всех сил пытаюсь написать что-нибудь, все еще используя требуемую функцию. 27.11.2012
  • @ user1855131 нет проблем, так как же найти слово в строке? Я бы искал '' (по сути, strchr). Затем в цикле перераспределите s2, чтобы подогнать лишнее слово, и запустите его. Если вы нашли '\n' или '\0' до ' ', то все готово! 27.11.2012
  • что-то вроде while(*(s1+i)!='\0') i++; конец=s1+i-1; 27.11.2012

Ответы:


1

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

i=0;j=0;k=0;  
while(s[k]!='\n') {
    if(s[k]!=' ')
    {
        s1[i][j]=s[k];
        k++; 
        j++;
    }
    else{
        j=0;i++;
    }

}
27.11.2012
  • Разве вы не хотели бы также увеличить k в else? Потому что, если я не ошибаюсь, в том виде, в котором он у вас есть сейчас, цикл кода будет бесконечным, когда он найдет пробел. 07.11.2014
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

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

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..