C语言输入字符和字符串不用数组
时间: 2024-10-09 21:10:08 浏览: 37
在C语言中,虽然通常我们会使用数组来存储字符或字符串,但也有一种称为“动态内存分配”的方法可以不必预先定义数组长度。例如,如果你想输入字符,可以使用`getchar()`函数一次获取一个字符,直到遇到空格、换行符或EOF(文件结束)为止:
```c
int ch;
while ((ch = getchar()) != '\n' && ch != EOF) {
// 使用 ch 进行操作
}
```
对于字符串,如果没有预知的长度,可以使用`fgets()`函数结合动态内存分配,比如`malloc()`,来接收用户输入,直到遇到换行符:
```c
char *str;
int len = 0;
str = malloc(1); // 初始分配1字节的空间
while ((str[len] = getchar()) != '\n' && str[len] != EOF) {
if (str[len] == '\0') break; // 遇到空字符则停止读取
len++; // 每次读取后增加空间
}
str[len] = '\0'; // 添加字符串终止符'\0'
// 现在str指向了用户输入的字符串
free(str); // 用完后别忘了释放内存
```
阅读全文