У меня есть 2 переменных. Нужно иметь тип unsigned short array[10]
(меня просят сделать это), а другой будет входом от scanf
, что удобно для строки.
Я передаю значения один за другим, начиная с строки и заканчивая unsigned short с циклом for.
Программы работают нормально, но я получаю предупреждающие сообщения.
"Warning passing argument of strcmp from incobatible pointer type"
и "expected const char * but argument is of type short unsigned int"
. Я не могу найти, как перейти от строки к unsigned short без предупреждений.
Короткий вариант моей программы здесь, так что у вас есть более четкое представление.Переход от строки к неподписанному короткому
Предупреждения в строках 28,43.
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int i, j, numberofseats;
char phone[11];
char *p;
unsigned short tempphone[10];
typedef struct
{
char fullname[40];
unsigned short phonenr[10];
unsigned int seatnr;
} PASSENGERS;
int main()
{
PASSENGERS passenger[53];
printf("Enter Passenger's Phone Nr:");
scanf("%s", phone);
i = 0;
for (p = phone; *p != '\0'; p++)
{
(tempphone[i]) = *p - '0';
i++;
}
for (j = 0; j < numberofseats; j++)
{
if (strcmp(tempphone, passenger[j].phonenr) == 0)
printf("Passenger %s has Seat Nr %u already Booked", passenger[j].fullname, passenger[j].seatnr);
}
}
Вы хотите сохранить где-нибудь, сколько цифр в 'tempphone' фактически используется. На данный момент вы, кажется, предполагаете ** все **, но вы только инициализируете первые элементы strlen (phone). Кроме того, вы не можете использовать 'strcmp' для сравнения массивов целых чисел. – tofro
@tofro: «* вы хотите хранить где-нибудь сколько цифр *« OP, вероятно, узнает это в тот момент, когда фактическое сравнение действительно работает * ... ;-) – alk
Программа отлично работает. Изменяя строку - > memcmp (tempphone, пассажир [j] .phonenr, sizeof (tempphone)) == 0) оба предупреждения, похоже, уходят .. – baskon1