#include<stdio.h>
#include<string.h>
int main(void) {
int t, n, i, j;
char dir[41][52];
char right[] = "Right";
char left[] = "Left";
char *p = NULL, storeDir[10], *k = NULL;
scanf("%d", &t);
while(t--) {
scanf("%d", &n);
fflush(stdin);
for(i = 0; i < n; i++) {
gets(dir[i]);
fflush(stdin);
}
i = n - 1;
k = dir[i];
j = 0;
p = strchr(dir[i], 'o');
while(*k != ' ') {
storeDir[j] = *k;
k++;
j++;
}
storeDir[j] = '\0';
printf("Begin ");
printf("%s\n", p);
for(i = n - 2; i >= 0; i--) {
if(strcmp(storeDir, right) == 0) {
printf("Left ");
}
else if(strcmp(storeDir, left) == 0) {
printf("Right ");
}
k = dir[i];
j = 0;
p = strchr(dir[i], 'o');
while(*k != ' ') {
storeDir[j] = *k;
k++;
j++;
}
storeDir[j] = '\0';
printf("%s\n", p);
}
printf("\n");
}
return 0;
}
これは、いくつかの文字列を取り込んで、ポインターで操作することによって出力するコードです。私のコンピューターでは正常に動作しますが、 http://ideone.com/で実行すると SIGSEGV エラーが発生します。無効なポインタ参照が原因だと思います。しかし、私はどこが間違っているのか理解できません。誰かが私にそれを指摘してもらえますか? プログラムのサンプル テスト ケースを次に示します。
4
Begin on Road A
Right on Road B
Right on Road C
Left on Road D
ティア