数列→文字列の処理

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
七氏

数列→文字列の処理

#1

投稿記事 by 七氏 » 15年前

以下のようなプログラムで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");
}

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

ideyan

Re:数列→文字列の処理

#2

投稿記事 by ideyan » 15年前

sprintf(stra,"text_data%d.txt",number);

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

びっくす

Re:数列→文字列の処理

#3

投稿記事 by びっくす » 15年前

サンプルです。
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:数列→文字列の処理

#4

投稿記事 by けえぼお » 15年前

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:数列→文字列の処理

#5

投稿記事 by 七氏 » 15年前

遅くなりました
sprintfを知らなかったため、とても参考になりました
これでやりたかったことの大半が出来るようになりそうです
本当にありがとうございました

閉鎖

“C言語何でも質問掲示板” へ戻る