69,373
社区成员
发帖
与我相关
我的任务
分享
#include "stdafx.h"
#include <stdio.h>
#include <stdarg.h>
#include<stdlib.h>
void Logprintf(const char *Path,char *format, ... )
{
char *buffer = NULL; int len;
FILE *f1;
if ((f1=fopen(Path,"wt+"))==NULL)
{
printf("%s can not open!\n",Path);
return;
}
va_list v;
va_start(v, format);
len=_vscprintf(format,v)+1;
buffer=(char*)malloc(len*(sizeof(char)));
if(buffer == NULL)
{
printf("Insufficient memory available\n");
fclose(f1);
return;
}
vsprintf(buffer,format,v);
va_end(v);
printf("%s\n",buffer);
fprintf(f1,"%s",buffer);
fclose(f1);
free (buffer);
buffer=NULL;
}
int main()
{
Logprintf("F:\\wr1.txt","%d\n%s\n%2.1f",23,"sdddddd",44.0);
}
#include "stdafx.h"
#include <stdio.h>
#include <stdarg.h>
#include<stdlib.h>
void Logprintf(const char *Path,char *format, ... )
{
char *buffer;
buffer=(char*)malloc(1024);//在这里想先申请1024,如果不够再双倍申请
if(buffer == NULL) exit(0);
FILE *f1;
if ((f1=fopen(Path,"wt+"))==NULL)
{
printf("can not open infile\n");
exit(0);
}
va_list v;
va_start(v, format);
vsprintf(buffer,format,v); //在这个地方往buffer里写
va_end(v);
printf("%s\n",&buffer);
fprintf(f1,"%s",&buffer); //write to the file
fclose(f1);
}
int main()
{
Logprintf("F:\\wr1.txt","%d%s",23,"sadfsdf");//这里的几个参数是不确定的,什么类型的也不确定
}
#include <stdio.h>
#include <stdlib.h>
struct Node /*定义 Node 结构体类型*/
{
int nData; /*存储数据的变量*/
Node *pNext; /*存储指向下一个节点的指针*/
}; /*定义 Node 结构体类型 结束*/
void main()
{
Node *pHead = NULL; /*头指针*/
Node *pPrevious = NULL; /*用于连接节点时指向 上一个节点 的指针*/
Node *pNew = NULL; /*用于连接节点时指向 新节点 的指针*/
int nCount = 0; /*计数器,每生成一个新节点就自加1,以纪录一共生成了多少个节点*/
int i = 0; /*控制循环的变量*/
void SortNum(Node *pHead, int nN); /*声明一个排序的函数*/
printf("请输入你想排序的数(输入 q 结束输入):");
do
{
pNew = (Node *)malloc(sizeof(Node)); /*分配新空间以生成新节点,用pNew指针指向*/
scanf("%d", &pNew->nData); /*读取数据到新节点的数据域*/
pNew->pNext = NULL; /*生成的新节点的 下一个 指针指向 空*/
nCount++; /*每生成一个新节点计数器自加1*/
if (NULL == pHead) /*如果生成的是第一个节点,让头指针pHead指向它*/
{
pHead = pNew;
}
if (NULL == pPrevious) /*如果生成的是第一个节点,让 上一个 指针pPrevious指向它,以便下一句 pPrevious->pNext 不为NULL*/
{
pPrevious = pNew;
}
pPrevious->pNext = pNew; /*将上一个节点的 pNext指针指向新生成的节点以连接链表*/
pPrevious = pNew; /*然后将pPrevious指向新生成的节点,以便再生成新节点时连接链表*/
}while('q' != getchar()); /*如果读取到字符'q'便停止读取数据*/
nCount--; /*因为最后多生成了一个节点读取'q',故自减1 得到需要排序的数的个数*/
printf("你输入了%d个数\n",nCount);
printf("从小到大排序的结果为:\n");
SortNum(pHead,nCount); /*调用排序函数*/
system("pause"); /*调用暂停函数方便观看结果*/
}
void SortNum(Node *pHead, int nN) /*起泡排序法,就不多说了*/
{
int i = 0;
int j = 0;
int nTemp = 0;
Node *pCurrent = pHead;
for (i = 1; i <= nN - 1; i++)
{
for (j = 1; j <= nN - i; j++)
{
if (pCurrent->nData > pCurrent->pNext->nData)
{
nTemp = pCurrent->nData;
pCurrent->nData = pCurrent->pNext->nData;
pCurrent->pNext->nData = nTemp;
}
pCurrent = pCurrent->pNext;
}
pCurrent = pHead;
}
for (i = 1; i <= nN; i++)
{
printf("%6d", pCurrent->nData);
pCurrent = pCurrent->pNext;
}
printf("\n");
return;
}
// crt_vsprintf.c
// compile with: /W1
// This program uses vsprintf to write to a buffer.
// The size of the buffer is determined by _vscprintf.
#include <stdlib.h>
#include <stdio.h>
#include <stdarg.h>
void test( char * format, ... )
{
va_list args;
int len;
char *buffer;
// retrieve the variable arguments
va_start( args, format );
len = _vscprintf( format, args ) // _vscprintf doesn't count
+ 1; // terminating '\0'
buffer = (char*)malloc( len * sizeof(char) );
vsprintf( buffer, format, args ); // C4996
// Note: vsprintf is deprecated; consider using vsprintf_s instead
puts( buffer );
free( buffer );
}
int main( void )
{
test( "%d %c %d", 123, '<', 456 );
test( "%s", "This is a string" );
}