C语言-输入任意长度字符串

问题描述

C语言,从标准输入读入几行输入,并显示在标准输出,每行的前面加上行号。

代码

#include <stdio.h>
#include <stdlib.h>
int main(void)
{
    int ch;
    int line_no = 0;
    int flag = 1;
    while((ch = getchar()) != EOF)
    {
        if (flag) 
        {
            printf("%d--", line_no);
            flag = 0;
        }
        putchar(ch);
        if(ch == '\n')
        {
            line_no++;
            flag = 1;
        }
    }
}
C语言中,可以使用动态内存分配函数(如malloc、realloc等)来实现输入任意数量的字符串。具体步骤如下: 1. 定义一个字符指针数组,用于存储输入字符串。 2. 使用循环结构输入字符串,每输入一个字符串就动态分配内存空间存储这个字符串,并将指针存入字符指针数组中。 3. 当输入结束后,可以根据需要使用realloc函数重新分配内存空间,以确保存储的字符串数量与实际需要的数量相匹配。 4. 最后,记得在程序结束前释放动态分配的内存空间,以避免内存泄漏。 下面是一个简单的示例代码,用于输入任意数量的字符串: ```c #include <stdio.h> #include <stdlib.h> #include <string.h> int main() { char **str_array = NULL; // 定义字符指针数组 char input_str[100]; // 定义用于输入字符串的数组 int count = 0; // 记录输入字符串数量 int i; // 循环输入字符串,直到用户输入空行为止 while (1) { printf("请输入第 %d 个字符串输入空行结束):\n", count + 1); fgets(input_str, sizeof(input_str), stdin); // 判断用户是否输入空行 if (strcmp(input_str, "\n") == 0) { break; } // 动态分配内存空间存储字符串 str_array = realloc(str_array, (count + 1) * sizeof(char *)); str_array[count] = malloc(strlen(input_str) + 1); strcpy(str_array[count], input_str); count++; // 更新输入字符串数量 } // 输出输入字符串 printf("您输入了以下 %d 个字符串:\n", count); for (i = 0; i < count; i++) { printf("%s", str_array[i]); free(str_array[i]); // 释放分配的内存空间 } free(str_array); // 释放字符指针数组的内存空间 return 0; } ``` 在这个示例代码中,我们使用了fgets函数来输入字符串,因为它可以防止缓冲区溢出的问题。同时,在动态分配内存空间时,我们使用了strlen函数来获取字符串长度,以确保分配的内存空间足够存储整个字符串
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值