Как я мог или не мог заявить в предыдущем вопросе, я новичок в программировании на C и имею опыт работы только с Java, поэтому я довольно некомпетентен в использовании Structs и Pointers и, возможно, плохо разбирался в этих понятиях.в первый раз.
Итак, я играл с C, и когда я попробовал следующую программу ниже:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define buf_sz 32
struct friends {
char name[buf_sz];
int number;
};
typedef struct friends friend;
void addfriend (friend * friendArr, int index);
void removefriend (friend * friendArr);
void main () {
int index;
int troll;
friend friendArr[50];
printf("1. Add Friend Name, 2. Remove Friend. Other buttons. Do nothing\n");
scanf(" %d", &troll);
while ((troll == 1) && (troll == 2)) {
switch (troll) {
case 1: addfriend(friendArr, index);
index++;
break;
case 2: removefriend(friendArr);
break;
default: break;
}
}
for (int i = 0; i < 50; i++) {
if (friendArr[i].name != NULL) {
printf("%s\t%d\n", friendArr[i].name, friendArr[i].number);
}
}
}
void addfriend (friend * friendArr, int index) {
char buf[buf_sz];
int number;
printf("Add a friend's name\n");
fgets(buf, buf_sz-1, stdin);
sscanf(buf, " %s", friendArr[index].name);
printf("Add his number\n");
scanf(" %d", &number);
friendArr[index].number = number;
}
void removefriend (friend * friendArr) {
char buf[buf_sz];
char name[buf_sz];
int check;
printf("Add a friend's name you wanna remove\n");
fgets(buf, buf_sz-1, stdin);
sscanf(buf, " %s", name);
for (int i = 0; i < 50; i++) {
if (friendArr[i].name == name) {
strcpy(friendArr[i].name, "");
}
}
}
Мой вывод был задан как:
1. Add Friend Name, 2. Remove Friend. Other buttons. Do nothing
1
@R 2009984
0
624
4
v 144
0
l� 685382481
32767
��G� 364104144
0
0�G� 368262747
32517
@�G� 440903072
� 32517
368167105
32517
�G� 370332944
32517
_�g 370428400
32517
368167105
32517
364032000
0
0
32517
�I 368217097
0
��G� 368166640
32517
��� 370428400
0
' 0
0
pQ 368182487
32517
370431760
0
��� 0
0
8W 0
32767
W 440904224
� 32517
��� 370432664
0
0
32517
��G� 368232864
32767
По сути, это набор странных чисел, значение которых я не понимаю.
Желаемым выводом будет сообщение для печати вопроса, добавление имени и номера пользователя, если нажата 1, и удаление пользователя.если была нажата клавиша 2., распечатайте всех пользователей.
Я считаю, что проблема заключается в том, что я передаю массив в struct, но я не уверен.В местах, где я ошибался, но я не мог найти ничего, что могло бы помочь.
Можете ли вы, дружелюбные люди, указать, где я ошибся?