ページ 11

数列→文字列の処理

Posted: 2010年9月13日(月) 11:04
by 七氏
以下のようなプログラムでfopenのstraに"text_data100.txt"と入れたいのですが、numberを数字(100)から文字列("100")に変更する方法を教えていただけないでしょうか?
numberを文字列に変更することが出来たら、文字列同士の結合はstrcat(a,b)でする予定です

C言語はまだ素人ですが過去にRubyを勉強したことがあり、その時はnumber.to_sという処理で同等のことをしていました

int main(void)
{
FILE *fo;
char stra[50]="text_data";
int number=100;
char strc[5]=".txt"
//ここの間の処理
fo=fopen(stra,"rb");
}

今から出かけるので返信が遅くなってしまうかもしれません
よろしくお願いします

Re:数列→文字列の処理

Posted: 2010年9月13日(月) 11:19
by ideyan
sprintf(stra,"text_data%d.txt",number);

聞かれている方法とは違いますが、
この方法でどうでしょうか?

Re:数列→文字列の処理

Posted: 2010年9月13日(月) 11:22
by びっくす
サンプルです。
sprintf関数を使った方が文字列の連結は簡単に出来ると思います。
#include <stdio.h>
#include <string.h>

int main(void)
{
    FILE     *fo;
    char     *stra  = "text_data";
    char     *strb  =".txt";
    char    strc[50];
    int     number = 100;
    
    sprintf(strc, "%s%d%s", stra, number, strb);
    printf("%s\n", strc);
    
    return 0;
}

Re:数列→文字列の処理

Posted: 2010年9月13日(月) 20:00
by けえぼお
STLを使ってみては?
#include <stdio.h>
#include <string>
#include <sstream>

int main( void )
{
    FILE *fo;
    char *stra = "text_data";
    int number = 100;
    char *strc = ".txt";

    std::ostringstream cOSStream;
    cOSStream
        << stra
        << number
        << strc;

    fo = fopen( cOSStream.str().c_str(), "rb" );
    if( fo == NULL )
        return -1;

    // 何らかの処理

    fclose( fo );

    return 0;
}

Re:数列→文字列の処理

Posted: 2010年9月13日(月) 21:45
by 七氏
遅くなりました
sprintfを知らなかったため、とても参考になりました
これでやりたかったことの大半が出来るようになりそうです
本当にありがとうございました