だから私は教授から任せられています。ここには:ポインタを使ってCで独自のstrchrを書くには?
strchr406という名前の関数を記述します。 2つのパラメータが渡されます:文字列とcharここに関数のプロトタイプがあります: char * strchr406(char str []、char ch); 関数はstrのchの最初のインスタンスへのポインタを返さなければなりません。たとえば:
char s[ ] = "abcbc";
strchr406(s, 'b'); // returns s + 1 (i.e., a pointer to the first 'b' in s)
strchr406(s, 'c'); // returns s + 2
strchr406(s, 'd'); // returns 0
彼は、ポインタを使用してstrchrの私たち自身のバージョンを書くために私たちを求めています。私はリソースをオンラインで調べましたが、彼が私たちに求めているものと一致するものはありません。私は他の学生と一緒に働いていますが、私たちの誰もこれを理解できませんでした。
「s + 1」を返すにはどうすればよいですか?
はこれまでのところ、私はこれを持っている: (それは簡単だ場合、私はまた、オンラインそれを置く:https://repl.it/FVK8)
#include <stdio.h>
#include "string_problems.h"
int main() {
char s[ ] = "abcbc";
strchr406(s, 'b'); // returns s + 1 (i.e., a pointer to the first 'b' in s)
strchr406(s, 'c'); // returns s + 2
strchr406(s, 'd'); // returns 0
printf("this should return %s\n", strchr406(s, 'c'));
return 0;
}
char *strchr406(char str[], char ch) {
char *p = str;
int index = 0;
while (*str != ch) {
++str;
++index;
}
if (*str == ch) {
return p + index;
} else {
return 0;
}
}
私は奇妙な出力を取得しています。どんな助けもありがとうございます。マニュアルから
あなたの問題が何であるかは明らかではありません。 'strchr'は非常に単純な関数です。しかし、あなたの関数からポインタや整数を返すことはできません。与えられたようにその割り当てはナンセンスです(NULLポインタ定数が '0'を使うよう教えることは悪いスタイルです;' NULL'マクロを使います)。多分、あなたのprofは、整数 '0'と同じではない_nullポインタ_を意味しますか?しかし、文字列のようにこれを印刷することはできませんが、明示的にテストして別のものを印刷します(ヌルポインタの考え方です)。 – Olaf
テキストの画像を投稿しないでください。少なくともテキストとして貼り付ける必要があります。 – Olaf
今すぐ編集します。 – nastypluto