0

私は基本的にこのコードをWindowsで機能させようとしていますが、Windows APIに含まれているsprint()関数とwritefile()関数を使用する必要があります。これをどうやって行うかについて少し混乱しています。WindowsのCコードはもっと複雑に見えます。

#include <stdio.h>
#include <string.h>
//Defining String used for name//
#define NAME "Rodger Rodger"
Main(){
char tbuf[35];
memset(tbuf, '\b', sizeof(tbuf));
sprintf(&tbuf[0], "Hello %s\n", NAME);
write(1,tbuf,sizeof(tbuf));
}

出力:Hello Rodger Rodger

これは機能しますが、Windowsでwritefile()およびsprint()関数を使用して実行する必要があります。

編集:最終的にそれを行うことができました。これが最終的なコードです。

//C Programming in Windows //
//Timothy Ford //
#include  <stdio.h>
#include <windows.h>


//Defining String used for name//
#define NAME "Timothy Ford"

int main(){
char tbuf[35];

//Handle used to define output
HANDLE Outta = GetStdHandle (STD_OUTPUT_HANDLE);

//DWORD used to store bytesWritten
DWORD written;

memset(tbuf, '\0', sizeof(tbuf));
sprintf(tbuf,"Hello %s\n", NAME);

//WriteFile used for output of string
WriteFile(Outta, tbuf, sizeof(tbuf), &written, NULL);


return 0;
}
4

1 に答える 1

2

コードにいくつかの問題があります。

  • tbuf[0]のアドレスをに渡さないでくださいsprintf。代わりにtbufを渡します。Tbufはすでに文字列へのポインタです:sprintf(tbuf, "Hello, %s\n", NAME);。そのままでは動作しないわけではありませんが、私が提案するバージョンは短くて明確だと思います。

  • なぜtbufを'\b'に設定しているのですか?これはバックスペースですが、tbufを0('\ 0')に設定したいと思います

これがideoneの作業バージョンです。

于 2012-09-10T06:57:27.737 に答える