Показать сообщение отдельно

  #5  
Старый 17.12.2008, 17:40
xismyname
Познающий
Регистрация: 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..
 
Ответить с цитированием