2017-11-28 7 views
0

私はCでそれを、char配列を作成し、それを印刷し、それを再編成し、その後転載したいと思いますが、ここで私がこれまで持っているものだシャアアレイ、印刷、再編成、および印刷を作成します。Cコーディング:再び

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

int main(){ 

    int i = 0; 
    int j = 0; 
    char k[4][2]; 
    char thing[1][1]; 

    strcpy(k[0] , "A"); 
    strcpy(k[1] , "B"); 
    strcpy(k[2] , "C"); 
    strcpy(k[3] , "D"); 

    printf("\nThe original order is: \n"); 
    for (int i = 0; i < 4; i++) {  // fill 
     printf("%s,", k[i]); 
    } 

    printf("\nThe reordering is: \n"); 
    for (int i = 0; i < 4; i++) { // reorder 
    strcpy(thing[0], k[i]); 
    j = (int)(i + rand()/(RAND_MAX/(5 - i))); 

    strcpy(k[i], k[j]); 
    strcpy(k[j], thing[0]); 
    printf("%s,", k[i]); // print 
    } 

    return(0); 

} 

私の端末出力です。警告はなく、中止だけです。

mac% clang thing.c -o thing 
mac% ./thing 

The original order is: 
A,B,C,D, 
The reordering is: 
zsh: abort  ./thing 
+0

である:ここでは私が思いついた解決策ですすべての文字列に1つの 'ヌル'ターミネータがあります。 –

+0

質問を編集して、表示されているエラーや警告を含めてください。ありがとう。 –

+0

ボブが明確になるように編集しました。 – billyl320

答えて

0

私はそれを理解しました。 ; - > `char型のK [4] [2]`; `、

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

int main(){ 

    int i = 0; 
    int j = 0; 
    char k[4] = "ABCD"; 
    char thing[1] = "O"; 

    printf("\nThe original order is: \n"); 
    for (int i = 0; i < 4; i++) {  // fill 
     printf("%c,", k[i]); 
    } 

    printf("\nThe reordering is: \n"); 
    for (int i = 0; i < 4; i++) { // reorder 
    thing[0]= k[i]; 
    j = (int)(i + rand()/(RAND_MAX/(4 - i))); 

    k[i]= k[j]; 
    k[j]= thing[0]; 
    printf("%c,", k[i]); // print 
    } 

    return(0); 

} 

、出力は` char型のK [4] [1]

The original order is: 
A,B,C,D, 
The reordering is: 
A,B,D,C,% 
関連する問題