0
名前のリストを「スクロール」しようとしていますが、スクロール部分が正しく表示されていますが、後方に移動する方法(スクロールアップ)がわかりません。私はエラーがi + j -1にありますが、私はちょうどセグメンテーション違反なしで正しい出力を得ることができません。これは私が仮定している負の数にアクセスしようとしているためです。Cプログラミング:逆順のリスト
int i,list,j = 1;
char answer [5];
do {
if (strcmp(answer, "+") == 0) {
printf("Number of Contacts = %d\n", count);
for(i=1;i<6;i++) {
if ((i + j) - 1 == count) {
printf("end of list\n");
break;
} else {
list = i + j;
if(strcmp(contactData[(i+j)-1].company_name," ") == 0) {
printf("%d.\t%s %s\n", list, contactData[(i+j)-1].first_name, contactData[(i+j)-1].last_name);
} else {
printf("%d.\t%s\n", list, contactData[(i+j)-1].company_name);
}
}
}
}
if (strcmp(answer, "-") == 0) {
printf("Number of Contacts = %d\n", count);
for(i=1;i<6;i++) {
if ((i + j - 1) < 0) {
printf("end of list\n");
break;
} else {
list = j - i;
if(strcmp(contactData[(j-i)-1].company_name," ") == 0) {
printf("%d.\t%s %s\n", list, contactData[(j-i)-1].first_name, contactData[(j-i)-1].last_name);
} else {
printf("%d.\t%s\n", list, contactData[(j-i)-1].company_name);
}
}
}
}
printf("Action(+,-,#,A,X):");
scanf("%s", answer);
getchar();
j++;
} while (1)
これが私の出力です:
Number of Contacts = 14
1. Chiraq
2. Cobra
3. Andre D'Souza
4. Gucci
5. Jordan
Action(+,-,#,A,X):+
Number of Contacts = 14
2. Cobra
3. Andre D'Souza
4. Gucci
5. Jordan
6. Migos
Action(+,-,#,A,X):+
Number of Contacts = 14
3. Andre D'Souza
4. Gucci
5. Jordan
6. Migos
7. North Face
https://ericlippert.com/2014/03/05/how-to-debug-small-programs/ – Yunnosch
提供[MCVE]。 – BLUEPIXY
配列は '[0]'で始まります。 'j = 0'と' i = 0'で始めるべきです。もしあなたのスクロール位置がjなら、なぜ全ての入力に 'j ++ 'をしますか?リストを逆順に表示しないので、 'if((i + j-1)<0)'をテストする必要はありません。私はあなたがエントリを表示するために必要なのはループ1つだけで、jのテストでは 'if(* answer == ' - ')j - 'と 'if(* answer == '+')j ++' – Holger