m0_69681472 2024-08-13 12:25 采纳率: 8.3%
浏览 6

C语言strcat问题

为什么程序运行之后首字母是D不是A,首字母的值永远都是原本的值加3,一直没有搞明白哪里出问题了

img

img

  • 写回答

2条回答

  • 盛透侧视攻城狮 优质创作者: 信息安全技术领域 2024-08-13 12:35
    关注

    帅哥采纳一下,我太蓝了🥹
    原代码的分析

    代码格式问题

    你的代码中有很多格式错误和不完整的部分,例如 char a[M][N] 的 M 和 N 未定义、缺少必要的头文件、语法错误等。
    strcat 和 b 的问题

    strcat 用于连接字符串,但 b 未初始化,且 b 是 NULL,这会导致程序崩溃。你需要分配内存给 b,而且 b 应该是一个字符数组。
    for 循环中的错误

    你的循环和字符串操作有许多格式错误,特别是关于字符串连接和数组的操作。
    输出首字母错误的问题

    如果你看到的输出首字母是 D 而不是 A,这可能是由于字符数组未正确初始化或字符串操作出错。
    修改后的代码及注释

    假设 M 和 N 是预定义的常量,我们可以将代码修改为以下内容,并添加中文注释:

    
    #include <stdio.h>
    #include <string.h>
    
    #define M 4
    #define N 8
    
    void fun(char a[M][N], char b[]) {
        int i;
        b[0] = '\0'; // 初始化 b 为一个空字符串
        for (i = 0; i < M; i++) {
            strcat(b, a[i]); // 连接字符串
        }
    }
    
    int main() {
        char w[M][N] = {"AAAA", "BBBBBBBB", "BBBBBBBB", "CCCC"}, a[100];
        int i;
        
        // 输出原始字符串数组
        printf("The string:\n");
        for (i = 0; i < M; i++) {
            puts(w[i]);
        }
        printf("\n");
        
        // 调用 fun 函数来连接字符串
        fun(w, a);
        
        // 输出连接后的字符串
        printf("The A string:\n");
        printf("%s\n", a);
        
        getchar();
        return 0;
    }
    
    
    
    评论

报告相同问题?

问题事件

  • 创建了问题 8月13日