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));
}

输出:你好罗杰罗杰

这可行,但是我需要在 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]to的地址sprintf。而是通过 tbuf。Tbuf 已经是一个指向字符串的指针:sprintf(tbuf, "Hello, %s\n", NAME);. 并不是说它不会按原样工作,但我认为我提出的版本更短更清晰。

  • 为什么要将 tbuf 设置为 '\b'?这是退格键,而我相信您想将 tbuf 设置为 0('\0')

这是ideone的工作版本。

于 2012-09-10T06:57:27.737 回答