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