最初に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
ようこそスタックオーバーフロー!以前に試したこと、実行した問題、お手伝いできることについてもう少し詳しく説明できますか? – templatetypedef
希望する出力のより良い例を挙げることはできますか?例えば、 "どう?"新しいラインに乗っていますか?スペースで区切られた引用符付きの文字列が必要なのでしょうか? –
メモリアドレスを取得し、インデックスとオフセットを出力する関数を書く必要があります。 – Buckeye