前提・実現したいこと
C言語習い始めです。
ランダムな文字列を作成し、それらをディレクトリとデータベースにそれぞれ登録しようと考えています。作成はできたのですが、それを保存・登録する際にディレクトリとデータベースでの文字列が異なって登録されてしまいます。
どこに原因があるのかが分からなかったため、質問させていただきました。
発生している問題・エラーメッセージ
「abcdefg」でランダム文字列がされた際、ディレクトリには「abcdefg」と登録されるがデータベースには「urhfajd」など別の文字になってしまう
文字数は同じ、文字の変換に規則性はなし
該当のソースコード
C
1#include <stdio.h> 2#include <string.h> 3#include <stdlib.h> 4#include <time.h> 5int main(void) 6{ 7 int i; 8 char random[30]; 9 char name_ran[30]; 10 char check[200]; 11 12 // a~zのランダム文字列作成 13 srand((unsigned) time(NULL)); 14 for (i=0; i<5; i++) { 15 random[i] = 'a' + rand()%26; 16 } 17 // randomをname_ranに文字列で記入 18 sprintf(name_ran, "%s\n", random); 19 //homeディレクトリにname_ranの名前で作成 20 sprintf( check, "mkdir /home/'%s'", name_ran ); 21 system( check ); 22 23 // mysqlへの登録 24 sprintf( sql_str, "INSERT INTO `user` (`name`, `name_ran`, `password`) VALUES ('%s', '%s', '%s')", name, name_ran, password ); 25} 26
試したこと
・random = "testname";
であればどちらも「testname」で登録されます
・for文の後にrandom[5] = 'a';
を付けると、6文字目はどちらも「a」になります
補足情報(FW/ツールのバージョンなど)
文字列リテラルであれば入ることは分かったのですが、1文字ずつ配列に加え、文字列として新しく書き直したと考えています。
それともランダム文字列の作成方法が、この書き方だと異なるのでしょうか?ご教授いただきたいです。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。