我是新来的和编程。我需要编写一个函数,以便能够通过所需的输入划分一个句子并单独输出。
如输入为“Hello,How are you ...”,它是23个字符,另一个输入是数字“6”。
因此,我想将其打印为“你好”和“你好吗......”
我认为最好使用数组...但是,我无法编写该函数。我希望有人可以帮助我..
顺便说一句,如果我想将函数放在头文件中,我该如何管理呢。
非常感谢...
答案 0 :(得分:2)
首先声明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 :(得分:1)
首先,C中的字符串是char *
,它已经是char
的数组:
char *msg = "Hello, World!";
int i;
for(i=0; i<strlen(msg); ++i)
{
char c = msg[i];
// Do something
}
如果要将函数放在头文件中,只需将其定义为inline