
17.12.2008, 17:40
|
|
Познающий
Регистрация: 07.09.2008
Сообщений: 79
С нами:
9302336
Репутация:
10
|
|
Сообщение от VIP
Не могу понять по поводу strcmp:
Код:
# include <stdio.h>
# include <string.h>
int main() {
char *buffer;
int a;
printf("Enter a, please:");
scanf("%s", &buffer);
if (strcmp(buffer, "END")) {
printf("END_NO");
}
else {
printf("END_OK");
}
}
Должна выводить END_OK если введено END, и END_NO если иначе. Так эта прога вообще почти никак не работает. =( Почему он делает не так как надо?
1.Tы создал указатель но не занял место в памяти куда будет указывать данный указатель.
2.Ошибка в scanf(),когда передаешь указатель buffer тебе незачем вставлять знак &,так как buffer указатель.
И если даже этот buffer будет статистическое поле (например buffer[16]) то все ровно знак *& не указываеться.
Если хочеш чтобы этот код работал корректно напиши так :
Код:
# include <stdio.h>
# include <string.h>
int main() {
char *buffer;
int a;
/* Mem. allocate */
buffer = (char*)malloc(sizeof(char) * 16);
printf("Enter a, please:");
scanf("%s", buffer);
if (strcmp(buffer, "END")) {
printf("END_NO");
}
else {
printf("END_OK");
}
}
Последний раз редактировалось xismyname; 17.12.2008 в 17:43..
|
|
|