c语言先给一个数字n,然后输入n行字符串
时间: 2024-09-26 18:06:18 浏览: 32
C语言实现将字符串转换为数字的方法
在 C 语言中,如果你想让用户先输入一个数字 n,然后在这个数目的行内依次输入字符串,你可以使用循环结构和动态内存分配来实现。下面是一个简单的示例程序:
```c
#include <stdio.h>
#include <stdlib.h> // 需要包含 malloc 和 free 函数
int main() {
int n;
char** strArray; // 存储字符串的数组
size_t i;
// 获取用户输入的行数
printf("请输入字符串行数: ");
scanf("%d", &n);
// 分配内存给存储字符串的数组
strArray = (char**)malloc(n * sizeof(char*)); // 每个元素是一个字符指针
if (strArray == NULL) {
printf("内存分配失败!\n");
return 1;
}
for (i = 0; i < n; i++) {
// 对每一行获取输入,并为其分配空间
char* line;
line = (char*)malloc(sizeof(char) * 100); // 假设每行最多100个字符
if (line == NULL) {
printf("内存分配失败! 结束程序...\n");
free(strArray);
return 1;
}
printf("请输入第 %d 行的字符串: ", i + 1);
fgets(line, sizeof(char) * 100, stdin); // 获取用户输入,包括换行符
// 移除fgets读取的最后一行的换行符
line[strlen(line) - 1] = '\0';
// 将字符串添加到数组中
strArray[i] = line;
}
// 打印所有输入的字符串
for (i = 0; i < n; i++) {
printf("第 %d 行的字符串: %s\n", i + 1, strArray[i]);
}
// 释放内存
for (i = 0; i < n; i++) {
free(strArray[i]);
}
free(strArray);
return 0;
}
```
在这个程序中,我们首先获取用户输入的行数 `n`,然后创建一个 `strArray` 数组来存放这些字符串。对于每行,我们动态分配内存并接收用户的输入,最后打印出所有的字符串并释放内存。
阅读全文