-1

C で 2 次元配列を設定しようとしています。すべてうまくいきますが、配列に割り当てられた値が出力されません。

#include <stdio.h>
#include <stdlib.h>
#include <ctype.h> 
#include <string.h> 

main()
{
    char parkingspace[25][4];
    char CarReg[7], validreg[7];
    int row, position;

    printf( "Enter the car Registration number \n" );
    fgets( CarReg, sizeof( CarReg ), stdin );
    if( isdigit( CarReg[0] )&& isdigit( CarReg[1] ) && (CarReg[2]=='H' ) && ( CarReg[3]=='I' ) && ( CarReg[4]=='R' ) && ( CarReg[5]=='E' ))
    {
        puts( "Valid Registration \n" );
        printf( "==================================================\n\n\n" );
    }
    else
    {   
        puts( "Invalid registration .\n Please put a value of two digits followed by the word HIRE! in caps" );
    }
    printf( "You entered: %s\n", CarReg );
    if( isdigit( CarReg[0] )&& isdigit( CarReg[1] ) && ( CarReg[2]=='H' ) && (CarReg[3]=='I' ) && ( CarReg[4]=='R' ) && ( CarReg[5]=='E' ))
    {
        strcpy(validreg, CarReg);
        printf( "Accepted Car Reg is : %s\n\n\n\n", validreg );
        printf( "==================================================\n\n\n");
    }
    for (row=1; row<26; row++)
    {
        for (position=1;position<5; position++)
        {
            parkingspace[row][position]=validreg;
            printf("parkingspace \t row[%d] position[%d] =[ %c ]\n", row,position,parkingspace[row][position]);
        }
    }   
}
4

3 に答える 3

1

問題の 1 つは、配列が 0 から size-of-array マイナス 1 までインデックス付けされることです。したがって、有効なインデックスrow0to24であり125好きではありません。


もう 1 つの問題は、文字配列を単一の文字に割り当てようとすることです。

parkingspace[row][position]=validreg;

validreginの最初の 4 文字だけが必要な場合は、parkingspace[row]たとえば内側のループに対して次のようにします。

for (position=0; position < 4; position++)
{
    parkingspace[row][position] = validreg[position];
    printf("parkingspace \t row[%d] position[%d] =[ %c ]\n", row, position, parkingspace[row][position]);
}
于 2013-03-06T11:43:26.487 に答える
0

39行目で間違いを犯しました

parkingspace[row][position]=validreg;

する必要があります

parkingspace[row][position]=validreg[position];
于 2013-03-06T11:42:17.747 に答える
0
for (row=1; row<26; row++)
{
    for (position=1;position<5; position++)

これらの2行は次のように変更する必要があります

for (row = 0; row < 24; row ++)
{
   for (position =0; position < 3; poisition++)

これは、uがchar Parkingspace[25][4]として宣言したためです。配列はインデックス「0」から始まり、(サイズ-1)まで続きます

于 2013-03-06T12:24:07.643 に答える