最後の文字を削除 – プログラミング – Home

通知
すべてクリア

最後の文字を削除


ライカ
 ライカ
(@ライカ)
ゲスト
結合: 21年前
投稿: 9
Topic starter  

以前,SQLserverへの接続方法で助けてもらったライカです.

今回は前回の続きでの質問となります.
以前の質問でなんとかサーバーへ接続することが出来ました.
ありがとうございます.

今回の質問は,サーバーへ書き込む際のことについてです.

sprintf_s(pNAME,%s,フィールド名);
sprintf_s(pDATA,'%s',データ);
strcat(pNAME2,pNAME);
strcat(pDATA2,buf);
strcat(pNAME2, ,);
strcat(pDATA2, ,);

といった命令で
 〔フィールド名1,フィールド名2,・・・・フィールド名x〕
としたいのですが
上記の命令だと,
〔フィールド名1,フィールド名2,・・・・フィールド名x,〕
となってしまい最後に余計な,がついてしまいます.

最後の,の消し方がわからずに作業が止まってしまってます.
ネットや書籍などいろいろ調べてみたのですが,有効な情報は得られませんでした.
どうかよろしくおねがいします.


引用解決済
トピックタグ
たいちう
 たいちう
(@たいちう)
ゲスト
結合: 23年前
投稿: 662
 

余計なstrcat()を消したらよいのでは、としか言えないな。この情報じゃ。


返信引用
ライカ
 ライカ
(@ライカ)
ゲスト
結合: 21年前
投稿: 9
Topic starter  

すいません,情報不足だったみたいで・・・.

ちなみに下記の方法でこの問題を解消することが出来ました.
int nN = strlen(pNAME2);
pNAME2[nN-1] = '\0';
int nD = strlen(pDATA2);
pDATA2[nD-1] = '\0';

ついでに質問なのですが,
char pDATA;
char buf;
sprintf_s(pDATA,'%s',buf);

としたところ,bufの内容しかpDATAに入らず
''を入れることが出来ません.
調べたところ'' ''と二つ重ねたら出来ると聞いたのですが
それを実行してみても出来ませんでした.
他に何か良い方法等あれば教えていただきたいです.


返信引用
tetrapod
 tetrapod
(@tetrapod)
ゲスト
結合: 21年前
投稿: 830
 

うーん。この方向での解決策を模索するより先に
SQLインジェクション脆弱性について調べるべし。
するとぜんぜん違う方策が提案されているのがわかるだろう。

このまま作ってもただのセキュリティホールだだ漏れプログラムになりかねない
全部作り直し、って可能性がちらほら見え隠れしているような気のせいがする


返信引用
かもねぎ
 かもねぎ
(@かもねぎ)
ゲスト
結合: 17年前
投稿: 61
 

// ん~ 反映されるけど・・
#include <windows.h>
#include <iostream>
using namespace std ;

int main ()
{

char pDATA[128] ;
char buf[] = hoge ;
sprintf_s(pDATA,'%s',buf) ;

cout << pDATA << endl ; // 'hoge'
printf( pDATA ) ; // 'hoge'
MessageBoxA ( NULL, pDATA, 0, 0 ) ; // 'hoge'

cin.ignore() ;
return 0 ;
}


返信引用
たいちう
 たいちう
(@たいちう)
ゲスト
結合: 23年前
投稿: 662
 

> char pDATA;
> char buf;
> sprintf_s(pDATA,'%s',buf);

文字と文字列の区別が付いてないです。
sprintfの例。

{
char pData[1024];
char buf[] = hoge;
sprintf(pData, '%s', buf);

cout << : << pData << : << endl;
}


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました