#10466: 到底哪裡記憶體區段錯誤(崩潰...


Thebigbang (喜憨外星人)


#include <stdio.h>

 

int main()

{

  char word[10100];

  int T=0;

  int N;

  int i,j;

  char ch;

  while(1){

    ch=getchar();

    if(ch == '\n')break;

    T*=10;

    T+=ch-48;

  }

  while(T--){

    i=0;

    while(1){

      word[i]=getchar();

      if(word[i] == '\n')break;

      i++;

    }

    j=1;

    while(j*j < i){

      j++;

    }

    N=j;

    if(N*N != i)printf("INVALID\n");

    else{

      for(i=0;i<N;i++){

        for(j=0;j<N;j++){

          printf("%c",word[i+j*N]);

        }

      }

      printf("\n");

    }

  }

  return 0;

}

 

不管我怎麼寫他不是吃到前面的換行

就是被Killed

不然就是記憶體區段錯誤

到底他是怎麼測的阿!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

#11844: Re:到底哪裡記憶體區段錯誤(崩潰...


k034006 (Sine Wu)


#include

 

int main()

{

  char word[10100];

  int T=0;

  int N;

  int i,j;

  char ch;

  while(1){

    ch=getchar();

    if(ch == '\n')break;

    T*=10;

    T+=ch-48;

  }

  while(T--){

    i=0;

    while(1){

      word[i]=getchar();

      if(word[i] == '\n')break;

      i++;

    }

    j=1;

    while(j*j < i){

      j++;

    }

    N=j;

    if(N*N != i)printf("INVALID\n");

    else{

      for(i=0;i<N;i++){

        for(j=0;j<N;j++){

          printf("%c",word[i+j*N]);

        }

      }

      printf("\n");

    }

  }

  return 0;

}

 

不管我怎麼寫他不是吃到前面的換行

就是被Killed

不然就是記憶體區段錯誤

到底他是怎麼測的阿!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

我突然發現你做了跟我一樣的事XDD

把\r一起判掉就不會RE會WA了(?)

#11845: Re:到底哪裡記憶體區段錯誤(崩潰...


k034006 (Sine Wu)


#include

 

int main()

{

  char word[10100];

  int T=0;

  int N;

  int i,j;

  char ch;

  while(1){

    ch=getchar();

    if(ch == '\n')break;

    T*=10;

    T+=ch-48;

  }

  while(T--){

    i=0;

    while(1){

      word[i]=getchar();

      if(word[i] == '\n')break;

      i++;

    }

    j=1;

    while(j*j < i){

      j++;

    }

    N=j;

    if(N*N != i)printf("INVALID\n");

    else{

      for(i=0;i<N;i++){

        for(j=0;j<N;j++){

          printf("%c",word[i+j*N]);

        }

      }

      printf("\n");

    }

  }

  return 0;

}

 

不管我怎麼寫他不是吃到前面的換行

就是被Killed

不然就是記憶體區段錯誤

到底他是怎麼測的阿!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!


過了~~~

別人表示"要判EOF"