Основная функция C Array - PullRequest
       2

Основная функция C Array

0 голосов
/ 27 января 2011

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

Например, ввод «Привет, как дела ...», это 23 символа, а другой ввод - «6».

Таким образом, я хочу напечатать его как «Привет» и «Как дела ...»

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

Кстати, если бы я хотел поместить функцию в файл заголовка, как мне это сделать.

Большое спасибо ...

Ответы [ 2 ]

2 голосов
/ 27 января 2011

Сначала файл заголовка, который объявляет функцию split_string.(Поскольку вы новичок в программировании, я поместил подробные комментарии):

/* Always begin a header file with the "Include guard" so that
   multiple inclusions of the same header file by different source files
   will not cause "duplicate definition" errors at compile time. */ 
#ifndef _SPLIT_STRING_H_  
#define _SPLIT_STRING_H_

/* Prints the string `s` on two lines by inserting the newline at `split_at`.
void split_string (const char* s, int split_at);

#endif

В следующем C-файле используется split_string:

// test.c

#include <stdio.h>
#include <string.h> /* for strlen */
#include <stdlib.h> /* for atoi */
#include "split_string.h"

int main (int argc, char** argv)
{
  /* Pass the first and second commandline arguments to
     split_string. Note that the second argument is converted to an 
     int by passing it to atoi. */
  split_string (argv[1], atoi (argv[2]));
  return 0;
}

void split_string (const char* s, int split_at)
{
  size_t i;
  int j = 0;
  size_t len = strlen (s);

  for (i = 0; i < len; ++i)
    {
      /* If j has reached split_at, print a newline, i.e split the string.
         Otherwise increment j, only if it is >= 0. Thus we can make sure 
         that the newline printed only once by setting j to -1. */
      if (j >= split_at)
        {
          printf ("\n");
          j = -1;
        }
      else 
        {
          if (j >= 0)
            ++j;
        }
      printf ("%c", s[i]);
    }
}

Вы можете скомпилировать и запустить программукак (при условии, что вы используете компилятор GNU C):

$ gcc -o test test.c
$ ./test "hello world" 5
hello
 world
1 голос
/ 27 января 2011

Прежде всего, строка в C - это char *, который уже является массивом char:

char *msg = "Hello, World!";
int i;
for(i=0; i<strlen(msg); ++i)
{
    char c = msg[i];
    // Do something
}

Если вы хотите поместить свою функцию в заголовочный файл, просто определите ее как inline

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