Длина ввода как найти

I have some jQuery code where I want to find user’s input length but every time instead of giving user’s input length, it is returning max length defined on the text box. How can I achieve this?

What I want to achieve using jQuery is this:
I want whenever user type 0, I want to convert it to 000, but when user type 70, it is also converting it to 000, which I want to keep as it is. So I want this to fire only when user input length is less then 1. Input user box has a max length defined in HTML which is 3.

Your input is really appreciated.

Here is my jQuery code:

$(document).ready(function(){
    $("input:[id*=txtFairIsaacScore]").keydown(function(event){
        if($("input:[id*=chkFairIsaacScoreEdited]").is(":checked")){
            //$("input:[id*=txtFairIsaacScore]").unmask();

            var cp_value =  $("input:id*=txtFairIsaacScore]").val().length;

            alert(cp_value);

            if(cp_value <= 1){
                if ((event.keyCode == 48) || (event.keyCode == 96)){
                    $("input:[id*=txtFairIsaacScore]").val("000");
                }
             }
        }
    });
});

0

Я пытаюсь измерить, сколько цифр у меня есть. если я введите следующую строку: 1 2 65 3 4 7, я хочу выход быть 8 .Но то, что я получаю 1 2 3 4Как найти длину ввода

#include <stdio.h> 
int main(void) { 
    int data; 
    int i = 1; 
    while (i <= sizeof(data)) { 
     scanf("%d", &data) 
     printf("%d", i); 
     i++; 
    } 
} 

3

Вы печатаете i, которые не имеют никакого отношения к входу в все. Итак, вне зависимости от вашего ввода, вы получите 1234

sizeof(data) такое же, как sizeof(int), то есть константа со значением 4 в вашей системе.

Если вы хотите, чтобы подсчитать количество чисел, не заботясь о ценности индивидуального номера, вы можете сделать:

#include <stdio.h> 
#include <ctype.h> 

int main(void) { 
    char s[1024]; 
    char* p; 
    int i = 0; 
    fgets(s, 1024, stdin); 
    p=s; 

    while (*p != '') 
    { 
     if (!isdigit(*p)) 
     { 
      p++; 
     } 
     else 
     { 
      i++; // Found new number 

      // Search for a delimiter, i.e. skip all digits 
      p++; 
      while (*p != '' && isdigit(*p)) 
      { 
       p++; 
      } 
     } 
    } 

    printf("We found %d numbers", i); 

    return 0; 
} 

Выход:

We found 6 numbers 

Обратите внимание, что этот код будет принимать любой ввод без цифр в качестве разделителя.

1

положил scanf перед циклом while и переместил printf после цикла while.

-1

Я также предоставляю решение согласно моему открытию.

#include <stdio.h> 
int main(void) { 
    int data = 1; 
    int i = 0; 
    // here data != 0 is trigger point for end input, 
    // once you done with your inputs you need to last add 0 to terminate 
    while (data != 0) { 
     scanf("%d", &data) 
     printf("Collected Data: %d", data); 
     i++; 
    } 
    printf("Total number of inputs are %d.", i); 
} 

Надеюсь, что это решение поможет вам.

-1

Вот мое решение:

#include <stdio.h> 
#include <stdlib.h> 

int main() { 
    int i = 0; 
    int data[100]; // creating an array 

    while(1) { // the loop will run forever 
     scanf("%d", &data[i]); 

     if (data[i] == -1) { //unless data[i] = -1 
      break; // exit while-loop 
     } 

     i++; 
    } 

    printf("%dn", data[2]); // print 2nd integer in data[] 

    return 0; 
} 

Не забудьте нажать кнопку ввода, как только вы ввели Int. Выход программы:

2 
56 
894 
34 
6 
12 
-1 

894 

Надеюсь, что это поможет. 🙂

Цитата
Сообщение от мама Стифлера
Посмотреть сообщение

Но один фиг перемудрили с кодом по ссылке. Можно было гораздо проще:

И да, и нет – там они удваивают предыдущую длину строки – на мой взгляд зря.

ИМХО. Лучше увеличивать строку на фиксированный размер, например на 4096 байта (страница) на 32битных ОСях, или на 16/256 байт под дос (экономия памяти) – зависит от платформы. К тому же сразу выравняемся по странице.

Вызывать realloc() на каждый добавленный байт, особенно если читаем из пайпа (выхлоп другой проги) – это жирное расточительство, т.к. realloc() под капотом несёт malloc(), memcpy(), free() – это ресурсоёмкие функции…

Добавлено через 53 минуты
Вот своё накорябал:

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
/*getstring()*/
#include        <stdio.h>
#include        <stdlib.h>
#include        <errno.h>
 
/*limit GROW to 16 for simply test - not needed input very long string*/
#define         GROW    (16)
 
char    *getstring(void)
{
    char        *buf = NULL; 
    int         ch, i = 0, len = 0;
 
    while((ch = getchar()) != EOF && ch != 'n')
    {
        len++; /*counter readed chars*/
        if( len >= i)
        {
            i+=GROW;
            buf = realloc(buf,i);
 
            if(buf == NULL)     break; /*no memory*/
        }
            buf[len-1] = ch;
    }
    if(buf != NULL) buf[len] = '';
 
    return buf;
}
 
 
 
ssize_t strlength(char *str)
{
    ssize_t len=0;
    
    if(str != NULL) /*if NULL then strlength() == 0, I not set errno variable*/
        while(str[len] != '') len++;
    
    return len;
}
 
int     main(void)
{
    char        *str;
    puts("Enter the test string:");
    str = getstring();
 
    if(str == NULL)
        perror("Error reading string");
 
    printf("nEntered string is "%s" with %d bytes.",str,strlength(str));
    
    free(str); /*Do not forgot free memory*/
    
return 0;}

Конечно вместо strlength() лучше использовать библиотечную strlen() – она оптимизирована под целевую платформу (умеет использовать SIMD команды).
Как видно, не намного сложнее Вашей, при этом есть обработка нештатных ситуаций…

В этом примере вы научитесь вычислять длину (размер) строки на C++(как строковых объектов, так и строк в стиле C).

Функции size() и length() – просто синонимы, и обе они делают одно и то же.

#include <iostream>
using namespace std;

int main()
{
    string str = "C++ Programming";

    // you can also use str.length()
    cout << "String Length = " << str.size();

    return 0;
}
String Length = 15

Пример: длина строки C-стиля

#include <iostream>
#include <cstring>
using namespace std;

int main()
{
    char str[] = "C++ Programming is awesome";

    // you can also use str.length()
    cout << "String Length = " << strlen(str);

    return 0;
}
String Length = 26

Читайте также

  • 👉 Преобразование восьмеричного числа в десятичное и наоборот в C++
  • 👉 Преобразование двоичного числа в восьмеричное и наоборот в C++
  • 👉 Как перевернуть строку в C++

Вопрос:

Я хочу знать длину одной строки пользовательского ввода в Fortran. Поскольку этот вход может содержать некоторые конечные пробелы, LEN_TRIM не дает правильного ответа.

program test

implicit none
character(len=100) :: s

read(*, '(a)') s
write(*, '(i0)') len_trim(s)

end program test

пример входов и выходов:

вход: Hello World!

выход: 12

ожидаемый результат: 15

вход: (5 пробелов)

вывод: 0

ожидаемый результат: 5

Лучший ответ:

Прочитайте ввод одного символа за раз и подсчитайте число, считанное с STDIN.

program foo
  character(len=100) s
  integer i
  i = 1
  do
      read(*,'(A1)',eor=10,advance='no') s(i:i)
      i = i + 1
  end do
10 print *, i - 1  ! Minus for 'n'
end program foo

TRIM и LEN_TRIM прежнему будут избавляться от конечных пробелов. Вы можете проверить это s(i:i) == ' ' а затем установить его на какой-либо печатный символ.

Ответ №1

Поэтому, если я понимаю ваш вопрос, вы хотели бы включить в свой запрос любые конечные пробелы, которые пользователь включил в свой ввод.

Это просто невозможно в форматированном вводе/выводе фортрана со стандартного ввода (с клавиатуры) – я был НЕПРАВИЛЬНО, см. Ответ @evets – это правда (я думаю, сейчас) для продвижения вывода полных строк. Невозможно отличить конечное пространство, включенное пользователем, и пробелы, которые обычно используются слишком, для всех строк Фортрана.

Поэтому, когда len_trim() подсчитывает длину строки, она отсекает все завершающие пробелы, включая те, которые введены пользователем. То же самое верно для функции trim().

Добавить комментарий