掲示板利用宣言

 次のフォームをすべてチェックしてからご利用ください。

 私は

 題名と投稿者名は具体的に書きます。
 課題の丸投げはしません。
 ソースの添付は「HTML変換ツール」で字下げします。
 返信の引用は最小限にします。
 環境(OSとコンパイラ)や症状は具体的に詳しく書きます。
 返信の付いた投稿は削除しません。
 マルチポスト(多重投稿)はしません。

掲示板2

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧

No.23838

C言語で・・・
投稿者---とも(2005/10/26 08:51:52)


C言語の初心者なんですが、実行結果が
「a.out abcde
bcde
cde
de
e」
という実行結果になるようなプログラムを作りたいのですが、下のプログラムではwhile(*pn!="\0");がポインターとの関数の文字と数字の比較ができないって感じのエラーでるし、実行結果通りにならないと思うんですがどこをなおしたほうがいいですか?文字を減らすプログラムの場合数字と比較しないと減らせないんじゃないんですか?質問の仕方が下手でごめんなさい><
#include<stdio.h>
char *func(char *);
int main (void)
{
int i;
char *pn;
do{
printf("%s\n", pn);
pn =func(pn);
}while(*pn!="\0");
return 0;
}
char *func(char *p)
{
return ++pn;
}



この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> Re:C言語で・・・ 23840 まきじ 2005/10/26 09:18:45
<子記事> Re:C言語で・・・ 23841 RiSK 2005/10/26 09:18:56
<子記事> Re:C言語で・・・ 23854 ぽへぇ 2005/10/26 22:32:40


No.23840

Re:C言語で・・・
投稿者---まきじ(2005/10/26 09:18:45)


>while(*pn!="\0");

"" だと文字列ですので != での比較はできません。
'\0' では?

> char *func(char *p)
>return ++pn;

++pn ではなく ++p では?


この投稿にコメントする

削除パスワード

No.23852

Re:C言語で・・・
投稿者---とも(2005/10/26 22:10:06)


ありがとうございます><そのとおりに入力したらコンパイルできました!けどセグメンテーション違反でした><LINAXのCCがコンパイラ方です><
>>while(*pn!="\0");
>
>"" だと文字列ですので != での比較はできません。
>'\0' では?
>
>> char *func(char *p)
>>return ++pn;
>
>++pn ではなく ++p では?



この投稿にコメントする

削除パスワード

No.23841

Re:C言語で・・・
投稿者---RiSK(2005/10/26 09:18:56)


【掲示板利用宣言】
題名と投稿者名は具体的に書きます。
ソースの添付は「HTML変換ツール」で字下げします。
環境(OSとコンパイラ)や症状は具体的に詳しく書きます。
 

ヒント:
sは文字列へのポインタとします。
    for (; *sが末尾じゃない; sを進める) printf("%s\n", s);



この投稿にコメントする

削除パスワード

No.23853

Re:C言語で・・・
投稿者---とも(2005/10/26 22:10:40)


ご指摘ありがとうございます><LINAXのコンパイラ方はCCです。すいませんどういうことですか?
>
    for (; *sが末尾じゃない; sを進める) printf("%s\n", s);




この投稿にコメントする

削除パスワード

No.23854

Re:C言語で・・・
投稿者---ぽへぇ(2005/10/26 22:32:40)


>文字を減らすプログラムの場合数字と比較しないと減らせないんじゃないんですか?
そうとも言えますが、そうしなくてもやりたいことが実現できることもあります。
もう少し柔軟に考えましょう。

>けどセグメンテーション違反でした
元のプログラムが悪いからです。

>int main (void)
>{
>   int i;
>   char *pn;  // ← これと
>   do {
>      printf("%s\n", pn); // ← これ
>      pn = func(pn);
ポインタ(pn)が指している先は何でしょうか?
ポインタ周辺をもう一度学習されることをお勧めします。

>a.out abcde
というのを実現したいのなら、以下を学習してください。
http://www9.plala.or.jp/sgwr-t/c/sec11-4.html




この投稿にコメントする

削除パスワード

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧