c语言字符串数组输入
时间: 2024-11-03 13:06:55 浏览: 38
在C语言中,字符串数组通常是用来存储一系列字符串的变量。当你需要从用户那里获取字符串作为输入时,可以采用以下步骤:
1. **声明数组**:首先,你需要声明一个足够大的字符数组,比如 `char stringArray[5];`,这里的5是你预设的最多能存储4个字符串(因为数组索引是从0开始的,最后一个元素的位置是数组长度减一)。
2. **动态内存分配**:对于不确定长度的字符串,你可以使用`malloc()`函数动态分配内存。例如 `char* stringArray = (char*) malloc(n * sizeof(char));` 其中n是用户输入的最大字符串长度加上1(为了包含null终止符`\0`)。
3. **提示用户输入**:使用`printf()`函数告诉用户他们应该输入什么样的字符串,然后使用标准输入流`stdin`读取用户的输入,如 `fgets(stringArray, n, stdin);`。
4. **处理输入**:检查输入是否已达到数组的大小,并确保以null终止符结束。如果输入太长,可能需要剪切或提示用户重新输入。
5. **结束输入并释放内存**:当用户完成输入或不再有字符串时,别忘了释放之前动态分配的内存,如果是动态分配,使用`free(stringArray)`。
6. **显示数组内容**:可以用循环遍历数组并打印每个字符串,展示用户输入的内容。
```c
#include <stdio.h>
#include <string.h>
int main() {
int n;
printf("请输入你要存储的字符串数量(包括空格): ");
scanf("%d", &n);
char* stringArray = (char*) malloc(n * sizeof(char));
if (!stringArray) {
perror("Memory allocation failed");
return 1;
}
for (int i = 0; i < n; ++i) {
fgets(&stringArray[i*strlen(stringArray)+1], strlen(stringArray), stdin); // 跳过'\n'
stringArray[i*strlen(stringArray)] = '\0'; // 添加null终止符
}
// 打印字符串数组
for (int i = 0; i < n; ++i) {
printf("String %d: %s\n", i+1, stringArray + i*strlen(stringArray));
}
free(stringArray);
return 0;
}
```
阅读全文