使用strlen查找用户输入的长度c

时间:2016-04-15 17:04:00

标签: c arrays string input strlen

我正在尝试创建一个用于存储用户输入的数组,我需要将数组作为用户输入的确切长度。我想取用户输入的长度,并将其用作数组的长度。我怎么能用strlen做到这一点?还有更好的办法吗?

2 个答案:

答案 0 :(得分:1)

这是获取内存的一种方法。我会使用CHUNKSIZE以上4但我限制它以便于测试。

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

#define CHUNKSIZE   4

int main(void){
    char *text;
    int maxlen = CHUNKSIZE;
    int index = 0;
    int ch;

    text = malloc(CHUNKSIZE);
    if(text == NULL)
        exit(1);
    printf("Enter your text:\n");

    while((ch = getchar()) != EOF && ch != '\n') {
        text[index++] = ch;
        if (index >= maxlen) {
            maxlen += CHUNKSIZE;
            text = realloc(text, maxlen);   
            if(text == NULL)
                exit(1);
        }
    }
    text[index] = 0;                // terminate

    printf("%d You entered: %s\n", maxlen, text);
    free(text);    
    return 0;
}

计划会议:

Enter your text:
A quick brown fox jumps over the lazy dog.
You entered: A quick brown fox jumps over the lazy dog.

答案 1 :(得分:1)

在编写自己的函数之前,您可以尝试以下代码:

char *str;
scanf("%ms", &str); // <--- Note the & before str

// Do something with str...

free(str);

这是ISO C标准supported on all POSIX.1-2008-conforming systems的扩展。