編集:どうやら、pigLatin メソッドの先頭で char *first を宣言し、メソッドの後半で &word[counter] に初期化する必要があったようです。これがなぜなのか知っている人はいますか?Visual Studio 2010 を使用しています。
これによりコンパイル時エラーが発生する理由を理解するのに苦労しています。問題のコード:
#include <stdio.h>
#include <string.h>
#include <conio.h>
char *pigLatin(char *word)
{
if (word[0] == 'a' || word[0] == 'e' || word[0] == 'i'
|| word[0] == 'o' || word[0] == 'u')
{
char yay[] = "yay";
strcat(word, yay);
return word;
}
else
{
int length = strlen(word);
int counter = 0;
char addOn[] = "";
char remainder[] = "";
char yay[] = "yay";
printf("%s", yay);
char *first = &word[counter];
printf("%c", *first); // error is here, don't know why it doesn't print
return word;
}
}
int main()
{
char hello[] = "hello";
pigLatin(hello);
printf("%s", hello);
getch();
return (0);
}
1>------ ビルド開始: プロジェクト: Program_One、構成: リリース Win32 ------
1> programone.c
1>programone.c(12): 警告 C4996: 'strcat': この関数または変数は安全でない可能性があります。代わりに strcat_s の使用を検討してください。非推奨を無効にするには、_CRT_SECURE_NO_WARNINGS を使用します。詳細については、オンライン ヘルプを参照してください。
1>programone.c(24): エラー C2143: 構文エラー: ';' がありません 「タイプ」の前に
1>programone.c(25): エラー C2065: 'first': 宣言されていない識別子
1>programone.c(25): エラー C2100: 不正な間接化
========== ビルド: 0 成功、1 失敗、0 最新、0 スキップ ==========
配列「hello」の最初の文字へのポインターが正しく印刷されない理由がわかりません。
前もって感謝します !