You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C语言二维字符串数组声明及整串输入问题求解

解决方案

你声明的char str[20][20]本身就是合法的二维字符串数组,最多可以存储20个长度不超过19的字符串(需要预留1位存储C语言字符串必备的结束符\0)。你只需要把双层逐字符读取的逻辑改成单层循环、单次读取完整字符串即可,修改后的可运行代码如下:

#include <stdio.h>

int main()
{
    char str[20][20];
    int i;

    // 单次读取一个完整字符串存入对应行
    for (i = 0; i < 20; i++)
    {
        // %19s用于限制输入长度,避免输入过长导致数组越界
        // str[i]本身就是第i行字符串的首地址,不需要额外加取地址符&
        scanf("%19s", str[i]);
    }

    // 测试输出,验证存储结果
    for (i = 0; i < 20; i++)
    {
        printf("第%d个输入的字符串:%s\n", i+1, str[i]);
    }
    
    return 0;
}

补充注意事项

  • 上述代码的%s格式符默认以空格、换行、制表符作为字符串分隔符,如果你需要读取带空格的整行内容,可以把scanf替换为fgets(str[i], 20, stdin),注意fgets会把输入末尾的换行符一并存入数组,如有需要可手动删除。
  • 禁止输入超过单行容量的字符串,否则会触发内存越界,导致程序运行异常。

内容的提问来源于stack exchange,提问作者CR28

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 16:36:04