こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

C言語で文字列の出力の問題

1行目に文字列aを出力し、2行目にaの各文字を2回づつ出力し、3行目にaの格文字の文字コードを出力する関数
void print_string(char a[])
を作成せよ。
この関数を print_string("abcd") で呼び出したときの出力は
abcd
aabbccdd
97 98 99 100
となる。

という問題なのですが、2行目と3行目をどうしたら文字列aの文字や文字コードを個別に出力できるのかわかりません。
1行目までしかできてないですが、次のが私の作ったプログラムです。

#include <stdio.h>

void print_string(char a[])
{

printf("%s\n",a);


}

int main (void)
{
print_string("abcd");

return(0);
}

よろしくお願いします。

投稿日時 - 2013-02-14 22:35:34

QNo.7945576

すぐに回答ほしいです

質問者が選んだベストアンサー

C言語では、文字列は、「文字コードの入ったchar型を並べた配列」です。
「'\0'があったら、その前までが文字列」というルールもあります。

char a[] で文字列を表現しているのなら、
a[0] は1文字目の文字コード(数値)が入っています。


ということで、3の方が簡単です。
a[X] を整数として出力すればよいのです。
Xは 「'\0'があったら、その前までが文字列」というルールから、 a[X] == '\0' になるまでです。
整数を出力するとき、printfでは%何だったでしょうか?printfのマニュアルで調べましょう。

2も、3の応用です。
printfには、「文字コードを指定して、対応する1文字を出力する」書式があります。マニュアルを読みましょう。

投稿日時 - 2013-02-14 23:21:05

ANo.1

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

#include <stdio.h>

void print_string(char a[])
{
char *p;

printf("%s\n", a);
for (p = a; *p; p++) {
putchar(*p), putchar(*p);
}
putchar('\n');
for (p = a; *p; p++) {
printf("%d ", *p);
}
putchar('\n');
}

int main (void)
{
print_string("abcd");
return 0;
}

投稿日時 - 2013-02-15 07:51:33

あなたにオススメの質問