Файл выводится как .csv цель C - PullRequest
1 голос
/ 21 августа 2011

Здравствуйте, ребята, я пишу тестовый файл для программы. где все возможные числа проверены, и я хочу, чтобы результат был зарегистрирован как файл .csv, чтобы я мог загрузить его в Excel.

float calc (float i, float j , float p, float ex){

    float nodalatio = (p/ex); 

    float ans = (0.68 *j + 1.22*nodalatio + 0.34*j -0.81);

    return ans;

}  

int main (int argc, const char * argv[])
{

    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
   float stage , grade, pos, ex;
    float resul;


    for (int i=1;i<=3;i++){
        stage = i;

        for(int j=1;j<=3;j++){
            grade = j;
            for(int p=1;p<=60;p++){
                pos = p;
                for(int e=1;e<=60;e++){

                    ex=e;
                    resul = calc(stage, grade,pos,ex);
                    NSLog(@"stage is %f grade is %f,pos is %f ex is %f the result is %f",stage,grade,pos,ex,resul);



                }

            }

        }
    }
    [pool drain];
    return 0;
}

выше приведен тестовый код, и я не могу понять, как вывести его в файл .csv. делает код в цикле или после цикла. это то, что у меня было, но это ничего не сделало!

NSString *file_path = @"test.csv";
NSString *test_1 = [NSString stringwithformat@"%f",resu];
[test_1 writeToFile:file_path atomically:YES encoding:NSUnicodeStringEncoding error:nil]; 

спасибо

Ответы [ 2 ]

1 голос
/ 22 августа 2011

Не изобретайте велосипед:

http://github.com/davedelong/CHCSVParser

Мой класс синтаксического анализатора CSV также включает в себя средство записи CSV для создания файлов CSV.

1 голос
/ 22 августа 2011

Попробуйте:

float calc(float, float, float, float);

float calc (float i, float j , float p, float ex)
{
    float nodalratio = (p / ex); 
    float ans = (0.68 * j + 1.22 * nodalratio + 0.34 * j - 0.81);
    return ans;
}  

int main (int argc, const char * argv[])
{
    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
    float stage , grade, pos, ex;
    float resul;

    [[NSFileManager defaultManager] createFileAtPath: @"test.csv" contents: [@"" dataUsingEncoding: NSUnicodeStringEncoding] attributes: nil];
    NSFileHandle *file = [NSFileHandle fileHandleForWritingAtPath: @"test.csv"];
    [file seekToEndOfFile];

    for (int i = 1; i <= 3; i++)
    {
        stage = i;
        for(int j = 1; j <= 3; j++)
        {
            grade = j;
            for(int p = 1; p <= 60; p++)
            {
                pos = p;
                for(int e = 1; e <= 60; e++)
                {
                    ex = e;
                    resul = calc(stage, grade, pos, ex);

                    NSString *str = [NSString stringWithFormat: @"%f, %f, %f, %f, %f\n", stage, grade, pos, ex, resul];
                    [file writeData: [str dataUsingEncoding: NSUTF16LittleEndianStringEncoding]];                 
                }
            }
        }
    }

    [file closeFile];

    [pool drain];
    return 0;
}

Это работает для меня.Он будет содержать правильную спецификацию и записывать каждую строку в UTF-16 (Unicode).Использование других кодировок, таких как NSUTF16StringEncoding, напишет спецификацию для каждой строки, что не совсем то, что вы хотите.


FWIW, вы уверены, что это не 0.68 * j и 0.34 * i или наоборот?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...