pre_coder 2023-02-18 11:37 采纳率: 100%
浏览 51
已结题

将二维数组其中一行拷贝到一维数组中

在写这段代码的时候,我希望根据一个变量x,把二维数组的第x-1行拷贝到一个一维数组,单独写一段代码是能运行的,但是我在整段程序中拷贝就不能拷贝过去,帮忙看看这是为什么叭?

#include <stdio.h>
#include <string.h>
int main()
{
    int n;
    scanf("%d",&n);
    char tmp[8];
    char num[10][8]={
    {'1','2','3','4','5','6','\0'},
    {'3','5','\0'},
    {'1','3','4','6','7','\0'},
    {'1','3','5','6','7','\0'},
    {'2','3','5','7','\0'},
    {'1','2','5','6','7','\0'},
    {'2','4','5','6','7','\0'},
    {'1','3','5','\0'},
    {'1','2','3','4','5','6','7','\0'},
    {'1','2','3','5','6','7','\0'}
    } ;
    strcpy(tmp,num[n]);
    printf("%s\n",tmp);
    return 0;
}

#include <stdio.h>
#include <string.h>
int wid(int n);
void display(char *str,char tmp[],int m,int n,int col);
int main()
{
    char num[10][8]={
    {'1','2','3','4','5','6','\0'},
    {'3','5','\0'},
    {'1','3','4','6','7','\0'},
    {'1','3','5','6','7','\0'},
    {'2','3','5','7','\0'},
    {'1','2','5','6','7','\0'},
    {'2','4','5','6','7','\0'},
    {'1','3','5','\0'},
    {'1','2','3','4','5','6','7','\0'},
    {'1','2','3','5','6','7','\0'}
    } ;
    
    char str[7][27],tmp[8];
    int k,col=5,line=7;
    scanf("%d",&k);
    int digit,x; 
    for(int h=0;h<k;h++){
        memset(tmp,'\0',sizeof(tmp));
        scanf("%d",&digit);
        printf("%d:\n",digit);
        int widd=wid(digit);
             int flag=2;
             
             for(int i=0;i<(col*widd+2*(widd-1));i++) {
                 for(int j=0;j<line;j++){
                     str[i][j]=' ';
                 }
                
             }//赋值空格
        
             while(digit>0){
                    x=digit%10;
              strcpy(tmp,num[x]);
              printf("%s\n",tmp);
             display((char *)str,tmp,(col*(flag-1)+2*(flag-1)),(col*flag+2*(flag-1)),col);
             flag--;
             digit/=10;
             }
                      
            
         
//         for(int i=0;i<7;i++){
//             for(int j=0;j<col*widd+2*(widd-1);j++){
//                 printf("%c",str[i][j]);
//             }
//             printf("\n");
//         }//output
    }
    
    return 0;
}
int wid(int n)
{
    int flag=1;
    while(n>0){
        n/=10;
        if(n>0)
        flag++;
    }
    return flag;
}

void display(char *str,char tmp[],int m,int n,int col)
{
    int len=strlen(tmp)-1;
    for(int i=0;i<len;i++){
        switch(tmp[i]-48){
            case 1:
                for(int r=m;r<n;r++)
                *(str+0*col+r)='*';
                break;
            case 2:
                for(int r=0;r<4;r++)
                *(str+r*col+m)    ='*';
                break;
            case 3:
                for(int r=0;r<4;r++)
                *(str+r*col+n-1)='*';
                break;
            case 4:
                for(int r=3;r<7;r++)
                *(str+r*col+m)='*';
                break;
            case 5:
                for(int r=3;r<7;r++)
                    *(str+r*col+n-1)='*';
                break;
            case 6:
                for(int r=m;r<n;r++)
                *(str+6*col+r)='*';
                break;    
            case 7:
                for(int r=m;r<n;r++)
                *(str+3*col+r)='*';
                break;    
        }
    }
}






  • 写回答

3条回答 默认 最新

  • 梦想橡皮擦 Python领域优质创作者 2023-02-18 11:51
    关注

    方案来自 梦想橡皮擦 狂飙组基于 GPT 编写的 “程秘”


    在你的代码中,你想要将二维数组num中的一行复制到一个一维字符数组tmp中。你可以使用strcpy()函数将一行拷贝到tmp数组中,但是在你的代码中,你正在尝试将整个num数组拷贝到一个单个字符数组tmp中。这不是你想要的,因为tmp数组只有8个元素,而num数组有10行每行有8个元素。

    如果你只想将num数组中的第x行复制到tmp数组中,可以使用如下代码:

    strcpy(tmp, num[x-1]);
    在这里,我们使用x-1来访问num数组中的第x行,因为数组的索引是从0开始的,而不是从1开始的。通过这个修改,你的代码应该能够正确输出了。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 3月2日
  • 已采纳回答 2月22日
  • 修改了问题 2月18日
  • 创建了问题 2月18日

悬赏问题

  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测