の一部の専門家が私を助けてくれることを期待してください。 Stackに投稿したのは初めてのことなので、私のことを辛抱してください。ありがとう。 ARGVからテキストファイルを開こうとしましたコマンドライン引数から乱数のtextfile.txtを読んで、
- は、[1]が、プログラムが
- NULLは、一度に1つの文字を読み込むfgetc関数を使用しようとした示した: はここに私の問題のリストです。 "white_space"を押すと、バフに( '2.2')を入れ、 '\ 0'を追加してから、sscanfを使ってダブルタイプにします。このアプローチが正しいかどうかはわかりません。ここで
私のコードです:
/*
* This program computes simple statistics from a file of ASCII numbers
*/
/*
* File: statsMain.c
* Author: William Vu T Nguyen
* ID: C0436847
* Created on February 6, 2017, 12:10 PM
*/
#include "statistics.h"
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
void printStats(FILE *dest, const int count, const double mean,
const double ssdev);
// main program
int main(int argc, char** argv) {
FILE *pFile;
int count;
int x;
char buff[100] = {0};
char *pBuff = buff;
double numVal;
double sum;
double sumsq;
double calculatedMean;
double calculatedStdDev;
if (argc != 2) {
fprintf(stderr, "usage: %s dataFileName\n", argv[0]);
exit(EXIT_FAILURE);
} else {
if ((pFile = fopen(argv[1], "r")) == NULL) {
fprintf(stderr, "Unable to open input file \"%s\"\n", argv[1]);
exit(EXIT_FAILURE);
} else {
while ((x = fgetc(pFile)) != EOF) {
*pBuff = x;
sscanf(pBuff, "%lf", &numVal);
sum += numVal;
sumsq += (sum * sum);
count++;
pBuff++;
}
calculatedMean = mean(sum, count);
calculatedStdDev = ssdev(sum, sumsq, count);
printStats(pFile, count, calculatedMean, calculatedStdDev);
}
fclose(pFile);
}
return (EXIT_SUCCESS);
}
void printStats(FILE *dest, const int count, const double mean,
const double ssdev) {
char str[100] = {0};
sprintf(str, "%d Values, Mean = %lf, Sample Standard Deviation = %lf"
, count, mean, ssdev); //deal with buffer
puts(str);
fprintf(dest, "%s", str);
}
私のコードは、私はCで初心者だことを示していた場合、私は私の学習段階ではまだだとして、その後しばらくお待ちください。私はプログラミング、回路設計、マイクロコントローラが大好きです。それらの科目を勉強するときに学校でひどくやったけど、決してそれが私の人生の決定的要因になることはありません。ありがとう。
1)1つではなく、2つの質問があるはずです:1つ目は、第二が行う」ある「なぜ 'のfopen()'を返す 'NULL'は?」私はファイルのデータを正しく扱いますか? "最初の方には明らかな答えがあります: 'fopen()'はエラーの際に 'NULL'を返すように定義されていて、' errno'の値をチェックするはずです。あなたは 'perror()'と 'strerror()'について知りたいかもしれません。 POSIXシステムでは、 'errno(3)'マニュアルページを読んでください。 2番目の回答に答えるには、ファイル形式の知識が必要です。そのため、質問の中に抜粋を含める必要があります。 – kostix
まったく、「YYYを解決するには、XXXは正しい方法ですか? StackOverflowフォーマットには適していません - 非公式のディスカッション/コードレビューのためにhttps://programmers.stackexchange.comを試してください。 – kostix
したがって私はSOのガイドラインに合うように編集することは不可能だと思うので、現在の形で質問を閉じることに投票します。私が示唆したように、代わりに2つの別々の質問をすることを検討してください。 – kostix