Вывод печатается дважды, а не один раз [дубликат]

Вы также можете проверить, не работает ли $result так, как до этого, перед выполнением массива fetch

$username = $_POST['username'];
$password = $_POST['password'];
$result = mysql_query('SELECT * FROM Users WHERE UserName LIKE $username');
if(!$result)
{
     echo "error executing query: "+mysql_error(); 
}else{
       while($row = mysql_fetch_array($result))
       {
         echo $row['FirstName'];
       }
}
3
задан user93 25 December 2015 в 04:45
поделиться

4 ответа

После первого scanf () в каждом scanf () в части форматирования поместите пробел

. Измените этот

scanf("%c",&val);

на этот

scanf(" %c",&val);

Причина в том, что scanf () возвращает, когда видит новую строку, а при первом запуске scanf () вы вводите ввод и нажмите enter. scanf () потребляет ваш вход, но не остается новой строкой, поэтому после scanf () потребляет эту оставшуюся новую строку.

Помещение пробела в части форматирования делает оставшуюся новую строку потребляемой.

1
ответ дан ferit 26 August 2018 в 16:48
поделиться

Вы можете использовать fgets():

#include<stdio.h>
int main() {
    int n, i = 0;
    char val;
    char a[20];

    printf("\nEnter the value : ");
    fgets(a, 20, stdin);
    printf("\nEnter the value to be searched : ");
    scanf("%c", &val);

    int count = 0;
    for (i = 0; i < 20; i++) {
        if (a[i] == val) {
            printf("\n%c found at location %d", val, i);
            count++;
        }
    }
    printf("\nTotal occurance of %c is %d", val, count);
    return 0;
}

или очистить stdin:

#include<stdio.h>

void clearstdin(void) {
    int c;
    while ((c = fgetc(stdin)) != EOF && c != '\n');
}

int main() {
    int n, i = 0;
    char val;
    char a[20];

    printf("\nEnter the value : ");
    scanf("%s",a);
    clearstdin();
    printf("\nEnter the value to be searched : ");
    scanf("%c", &val);

    int count = 0;
    for (i = 0; i < 20; i++) {
        if (a[i] == val) {
            printf("\n%c found at location %d", val, i);
            count++;
        }
    }
    printf("\nTotal occurance of %c is %d", val, count);
    return 0;
}

Также см. C: Несколько scanf, когда я вхожу в значении для одного scanf он пропускает второй scanf

0
ответ дан Community 26 August 2018 в 16:48
поделиться
printf("\nEnter the value : ");
scanf("%s",a);
printf("\nEnter the value to be searched : ");
scanf("%d",&val);   // here is different

Я не знаю, почему, но код выше работает ...

scanf("%d",&val);
0
ответ дан KunMing Xie 26 August 2018 в 16:48
поделиться

Для строки формата вы можете использовать «% c» вместо «% c». Заготовка вызывает scanf (), чтобы пропустить пробел (включая символы новой строки) перед чтением символа.

0
ответ дан M.S Chaudhari 26 August 2018 в 16:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: