fork(1) download
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #include<string.h>
  4.  
  5. int main(int argc, char *argv[])
  6. {
  7. FILE *fp1, *fp2, *fp3;
  8. char code1[100][50], code2[100][50], code3[100][50];
  9. int data1[50]={0}, data2[50]={0}, data3[50]={0}, i=0, j=0;
  10.  
  11. /*エラーチェック*/
  12. if(argc!=4){
  13. fprintf(stderr,"エラー:ファイルが %d コ多いです\n",argc-4);
  14. exit(1);
  15. }
  16. if((fp1=fopen(argv[1],"r"))==NULL){
  17. fprintf(stderr,"エラー:ファイル %s を開けません\n",argv[1]);
  18. exit(1);
  19. }
  20. if((fp2=fopen(argv[2],"r"))==NULL){
  21. fprintf(stderr,"エラー:ファイル %s を開けません\n",argv[1]);
  22. exit(1);
  23. }
  24. if((fp3=fopen(argv[3],"w"))==NULL){
  25. fprintf(stderr,"エラー:ファイル %s を開けません\n",argv[1]);
  26. exit(1);
  27. }
  28.  
  29. /*在庫と入庫の読み込み*/
  30. while(fscanf(fp1,"%s%d",code1[i],&data1[i])!=EOF){
  31. i++;
  32. }
  33. while(fscanf(fp2,"%s%d",code2[j],&data2[j])!=EOF){
  34. j++;
  35. }
  36.  
  37. /*在庫の数を更新*/
  38. for(i=0; i<50; i++){
  39. for(j=i; j<50; j++){
  40. if(strcmp(code3[i],code1[j])!=0){
  41. strcpy(code3[i],code1[j]);
  42. data3[i]=data1[j];
  43. break;
  44. }
  45. }
  46. }
  47.  
  48. for(i=0; i<50; i++){
  49. for(j=i; j<50; j++){
  50. if(strcmp(code2[i],code3[j])==0){
  51. data3[j]+=data2[i];
  52. break;
  53. }
  54. if(strcmp(code3[j],"\0")==0){
  55. strcpy(code3[j],code2[i]);
  56. data3[j]=data2[i];
  57. break;
  58. }
  59. }
  60. }
  61.  
  62. /*更新した在庫をファイルに出力*/
  63. for(i=0; i<50; i++){
  64. if(strcmp(code3[i],"\0")==0) break;
  65. fprintf(fp3,"%4s%4d\n",code3[i],data3[i]);
  66. }
  67.  
  68. fclose(fp1);
  69. fclose(fp2);
  70. fclose(fp3);
  71.  
  72. return(0);
  73. }
  74.  
  75.  
Runtime error #stdin #stdout #stderr 0s 2244KB
stdin
Standard input is empty
stdout
Standard output is empty
stderr
エラー:ファイルが -3 コ多いです