kusa_cwのプロフィール

@kusa_cw kusa_cw
ありがとう数5
質問数0
回答数11
ベストアンサー数
4
ベストアンサー率
50%
お礼率
0%

  • 登録日2007/03/21
  • tab

    下のプログラムソースは、jinji.txtの各行の一列目を読み取るプログラムです。 jinji.txtには項目がtabで区切られています。 たとえば、下のようになっています。 番号 tab 姓 tab 名 1 tab 高田 tab 太郎 2 tab 山田 tab 順平 … 300 tab 永井 tab 晃 ソースの真ん中ぐらいに、 while(buff[count]!=' ') とあります。これは最初のtabまで読み取る、つまり一列目を読み取るコードなのですが、tabは「' '」でいいのでしょうか?「' '」でtabだと判断できますか? #include<stdio.h> #define num 100 int main(){ FILE *fp; char buff[num],bango[10]; int count; fp = fopen("jinji.txt","r"); if(fp == NULL) exit(1); fgets(buff,sizeof(buff),fp); count=0; while(buff[count]!=' '){ bango[count]=buff[count]; count++; } //printf("%s\n",bango); fclose(fp); }

  • C言語の問題について教えていただきたいのですが

    【身長デ一タを順次入力していき、160(cm)未満,160(cm)以上,170(cm)未満、170(cm)以上,180(cm)未満、180(cm)以上のデータがそれぞれいくつあったかを出力する(同時に全入力デ一タ数も出力する)プログラムを作成せよ。但し,データとして999 が入力された時点でプログラムの実行が終了するものとする.なお,999 というデータは,全入力データ数に入れないものとする.】 という問題が解けません・・・。わかる方いらっしゃいましたら教えてください。 一応私なりに #include <stdio.h> void main() { int n=0,i=0,j=0,k=0,l=0; double a; printf("身長を入力してください\n"); scanf("%lf",&a); while(a!=999){ scanf("%d",&n); n++; if(a<160){ i++; }else if(a>=160 && a<170){ j++; }else if(a>=170 && a<180){ k++; }else{ l++; } } printf("入力データ数 %d\n",n-1); printf("160cm未満 %d\n",i); printf("160cm以上170cm未満 %d\n",j); printf("170cm以上180cm未満 %d\n",k); printf("180cm以上 %d\n",l); } と作ってみたものの…;;; 正しいプログラムを教えていただけると嬉しいです。よろしくお願いします。

  • テキストの読み込みとmalloc()についてです

    こんにちは。 二つのベクトルの次元と要素をテキストファイルから読み取ってそのベクトルの和を出したいのですがうまくいきません。 #include <stdio.h> #include <stdlib.h> double vector_sum(double *x, double *y, int n){ int i; double z[256]={0}; for(i=0;i<n;i++){ z[i] = x[i] + y[i] ; } return *z; } //ベクトル和を出す関数(のつもり)// int main(void){ int i,j,e; double *a,*b,c[256][256]; //a,bはベクトル// FILE *fp; char fname[64]; char str[256]; double z[256]; printf("二つのベクトルが書き込まれているファイル名を入力してください."); scanf("%s",fname); fp = fopen(fname,"r"); if(fp==NULL){ printf("そのようなファイルを見つけることができません。"); } while (fgets(str, 256, fp) >= 0) { i++; fgets(str, 256, fp); printf("%s",str); //テキストの読み取り// if(fgets(str,256,fp)==NULL) break; //読み取り終了時の動作// sscanf(str,"%lf", &c[i]);//c[i][0]は要素数、c[i][1以上]はベクトルの中身を指すことにする。// printf("%lf%lf%lf%lf%lf%lf%lf%lf\n",c[0][0],c[0][1],c[1][2]); if(sscanf(str,"%lf", &c[i])<1){ printf("Format error"); } } if(c[0][0]!=c[1][0]){ printf("要素数が違います。"); } a = malloc(sizeof(double) * c[0][0]); b = malloc(sizeof(double) * c[1][0]); if(a==NULL||b==NULL){ printf("記憶領域の確保に失敗しました。"); } e = c[0][0]; //要素数// for(i=0;i<=e-1;i++){ a[i]=c[0][i+1]; //ベクトルの中身のみをa,bに代入する。// b[i]=c[1][i+i]; } *z= vector_sum(a,b,e); printf("ベクトル和は{"); for(i=0;i<=e-1;i++){ printf("%lf,",z[i]); } printf("}です。"); return 0; } テキストファイルは下のものを使いました。(ファイル名はvector.txt) element: 7 { 4, 4 ,4 ,4 ,4 ,4 ,4 } element: 7 { 8, 8, 8, 8, 8, 8, 8 } 結果は 「二つのベクトル名が書き込まれているファイルを入力してください。(vector.txtを入力) element: 7 { 8, 8, 8, 8, 8, 8, 8 } 要素数が違います。記憶領域の確保に失敗しました。ベクトル和は{}です。」 と表示されてしまい、困っています。 初歩的なミスかもしれず恐縮ですがよろしければ回答お願いします。

  • C言語の宿題なのですが・・・

    問題は「ベクトルの和を求めよ。ただし入力部、出力部、計算部を手続き型で記述せよ」というものです。 例として、(1,2,3)と(4,5,6)と入力すると、(1+4,2+5,3+6)の計算で(5,7,9)が表示されるそうです。 ある程度自分でも書いてみたのですが、単純に計算部分の書き方が分からなかったり、その他の部分も不十分なようです。 //-------------------------------------------------------------- #pragma hdrstop //-------------------------------------------------------------- #pragma argsused #include<stdio.h> #include<conio.h> #define N 3 /*---Input Vector Function---*/ void ReadVector(int vec[N]) { int i; for(i=1;i<=N;i++) scanf("%d",&vec[]); } /*---Output Vector Function---*/ void WriteVector(int vec[]) { int i; for(i=1;i<=N;i++) printf("%d"vec[]); } /*---Plus Function of Vector---*/ void VecPlus(int vec1[],int vec2[],int vec3[]) { int i; for(i=1;i<=N;i++)   ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄         ?   ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ } /*---Main Program---*/ int main(void) { int Vector1[N+1],Vector2[N+1],Vector3[N+1]; ReadVector(vector1); ReadVector(vector2); VecPlus(vector1,vector2,vector3); WriteVector(vector3); getch(); return 0; } //-------------------------------------------------------------- もし宜しかったら、どなたかアドバイスしていただけませんでしょうか。 よろしくお願いいたします。

  • ループが回らない

    #include<stdio.h> #include<string.h> #define HASH_SIZE 100 #define NAME_SIZE 20 char name[ HASH_SIZE ][ NAME_SIZE ]; i int hash_func( char str[] ) { } void main() { char s[ NAME_SIZE ],i; int index ; while(1){ printf("文字を入力!"); scanf("%s",s); if( s[0]='.') break; index = hash_func(s); strcpy( name[ index ],s) ; printf("*\n"); } } このプログラムの 無限ループのところがぜんぜん回らないんです。 自分なりに試行錯誤してみたのですが 限界に達しましたので助言をいただきたいです。 上の関数は今はなにも書いてないですが、 書いてあっても動かないです。 月曜日提出の課題なので なるべく早め回答いただけると幸いです。 アドバイスお待ちしております。