文字列と配列の問題です
Posted: 2007年6月27日(水) 00:10
ぜひ教えてください!
問題は
文字列の長さを求める関数 str_len() を作成しなさい.str_len() は,ある文字列の先頭アドレスを実引数として与えられたとき,その文字列の長さ(最後の 0 を含まない byte数)を返す関数です.例えば,
int n1, n2; static char a[/url] = "ALPHABET";
n1 = str_len(a); n2 = str_len("abcd");
とすれば n1 に 8 が,n2 に 4 がそれぞれ代入されます.なお,この関数の第1行を
unsigned int str_len(char *c)
と定めます("char *c" は "char c[/url]" としても同じです.コンパイラは,どちらも「c は char型のポインタ変数である」と解釈します).
(ヒント)for文などを用いて *(c + i) が 0 となる直前までの byte数を調べます.
関数だけ作ればいようですが、一応scanfで文字の入力する形で作ってみました。
for文の使い方がよくわからなかったので使わなかったのですが…
コンパイルはできましたがうまく作動しません。
また作ってみたものの理解してるかはあやしいです;;
ぜひアドバイスをお願いします!
#include <stdio.h>
unsigned int str_len(char *c)
{
int i = 0;
do{
i = i++;
}while( *(c + i) != 0);
return i;
}
int main(void)
{
char a[100];
unsigned int n;
printf("文字列を入力して下さい。\n");
scanf("%s",a);
n = str_len(a);
printf("文字列の長さは%uです。",n);
}
問題は
文字列の長さを求める関数 str_len() を作成しなさい.str_len() は,ある文字列の先頭アドレスを実引数として与えられたとき,その文字列の長さ(最後の 0 を含まない byte数)を返す関数です.例えば,
int n1, n2; static char a[/url] = "ALPHABET";
n1 = str_len(a); n2 = str_len("abcd");
とすれば n1 に 8 が,n2 に 4 がそれぞれ代入されます.なお,この関数の第1行を
unsigned int str_len(char *c)
と定めます("char *c" は "char c[/url]" としても同じです.コンパイラは,どちらも「c は char型のポインタ変数である」と解釈します).
(ヒント)for文などを用いて *(c + i) が 0 となる直前までの byte数を調べます.
関数だけ作ればいようですが、一応scanfで文字の入力する形で作ってみました。
for文の使い方がよくわからなかったので使わなかったのですが…
コンパイルはできましたがうまく作動しません。
また作ってみたものの理解してるかはあやしいです;;
ぜひアドバイスをお願いします!
#include <stdio.h>
unsigned int str_len(char *c)
{
int i = 0;
do{
i = i++;
}while( *(c + i) != 0);
return i;
}
int main(void)
{
char a[100];
unsigned int n;
printf("文字列を入力して下さい。\n");
scanf("%s",a);
n = str_len(a);
printf("文字列の長さは%uです。",n);
}