精华内容
下载资源
问答
  • C语言文件写入字符串写入文件

    千次阅读 2014-04-27 21:42:54
    #define _CRT_SECURE_NO_WARNINGS #include"stdio.h" #include"stdlib.h" #include"string.h" ... //循环写入 for (i = 0; i (a); i++) { fputc(a[i], fp); } fclose(fp); system("pause"); }
    #define _CRT_SECURE_NO_WARNINGS
    #include"stdio.h"
    #include"stdlib.h"
    #include"string.h"
    
    
    void main()
    {
    	int i = 0;
    	char a[] = "abcdefdsafdsfgbbb";
    	FILE *fp = NULL;
    	//win  linux通用
    	char *filename = "d:/1.txt";
    
    
    	fp = fopen(filename, "a");
    	//循环写入
    	for (i = 0; i < strlen(a); i++)
    	{
    		fputc(a[i], fp);
    	}
    	fclose(fp);
    	
    
    	system("pause");
    }
    

    展开全文
  • 本篇文章是对C语言文件读入字符串以及将字符串写入文件的方法进行了详细的分析介绍,需要的朋友参考下
  • } // 新建文件写入 if(!(fp.Open((LPCTSTR)m_strsendFilePathName, CFile::modeCreate | CFile::modeWrite |CFile::typeBinary))) { return; } fp.SeekToBegin(); fp.write(tmp,fpLength); fp.close;

    1.纯C实现

     FILE *fp;
    	if ((fp = fopen("example.txt", "rb")) == NULL)
    	{
    		exit(0);
    	}
    	fseek(fp, 0, SEEK_END);
    	int fileLen = ftell(fp);
    	char *tmp = (char *) malloc(sizeof(char) * fileLen);
    	fseek(fp, 0, SEEK_SET);
    	fread(tmp, fileLen, sizeof(char), fp);
    	fclose(fp);
    	for(int i = 0; i < fileLen; ++i)
    	{
    		printf("%d  ", tmp[i]);
    	}
    	printf("\n");
     
    	if ((fp = fopen("example.txt", "wb")) == NULL)
    	{
    		exit(0);
    	}
    	rewind(fp);
    	fwrite(tmp, fileLen, sizeof(char), fp);
    	fclose(fp);
    	free(tmp);
    

    2.利用CFile(MFC基类)

    CFile需要包含的头文件为Afx.h

    打开文件的函数原型如下

    if(!(fp.Open((LPCTSTR)m_strsendFilePathName,CFile::modeRead)))
    

    有多种模式,常用的有如下:

    modeRead
    
    modeWrite
    
    modeReadWrite
    
    modeCreate
    

    文件类型有两种:

    typeBinary
    
    typeText
    

    读写非文本文件一定要用typeBinary

    读取数据的函数原型:

    virtual UINTRead(void*lpbuf, UINT nCount);
    

    将文件读出:

    CFile fp;
    if(!(fp.Open((LPCTSTR)m_strsendFilePathName,CFile::modeRead)))
    {
        return;
    }
    fp.SeekToEnd();
    unsignedint fpLength = fp.GetLength();
    char *tmp= new char[fpLength];
    fp.SeekToBegin();    //这一句必不可少
    if(fp.Read(tmp,fpLength) < 1)
    {
        fp.Close();
        return;
    }
    
    // 新建文件并写入
    
    if(!(fp.Open((LPCTSTR)m_strsendFilePathName, CFile::modeCreate | CFile::modeWrite |CFile::typeBinary)))
    {
        return;
    }
    fp.SeekToBegin();
    fp.write(tmp,fpLength);
    fp.close;
    
    展开全文
  • 终于解决了C语言控制cmd窗口,多次发送字符串给cmd执行命令,特此记录一下。 功能1:C语言用线程打开记事本,发送消息给记事本,实现向记事本写入字符 功能2:C语言发送消息给已经打开的cmd窗口,实现自动化执行cmd...

    终于解决了C语言控制cmd窗口,多次发送字符串给cmd执行命令,特此记录一下。
    功能1:C语言用线程打开记事本,发送消息给记事本,实现向记事本写入字符
    功能2:C语言发送消息给已经打开的cmd窗口,实现自动化执行cmd命令,这里是可以持续不断的发送命令,而不是普通的带参数打开cmd,比如一个命令开始,还可以再传递一个结束的命令,等等。

    在VS2015里新建空白cpp工程,设置字符集为多字节,关闭SDL安全检查,新建一个cpp源文件

    代码如下:

    #include <windows.h>
    #include <tchar.h>
    #include <stdio.h>
    
    
    int main(int argc, char* argv[])
    {
    	TCHAR szCommandLine[] = TEXT("Notepad");//或者WCHAR
    											//LPWSTR szCommandLine = TEXT("NOTEPAD");//错误
    											//STARTUPINFO si = { sizeof(si) };
    	STARTUPINFO si;
    	PROCESS_INFORMATION pi;
    	ZeroMemory(&si, sizeof(si));
    	si.cb = sizeof(si);
    	ZeroMemory(&pi, sizeof(pi));
    
    	si.dwFlags = STARTF_USESHOWWINDOW;  // 指定wShowWindow成员有效
    	si.wShowWindow = TRUE;          // 此成员设为TRUE的话则显示新建进程的主窗口,
    									// 为FALSE的话则不显示
    
    	BOOL bRet = ::CreateProcess(
    		NULL,           // 不在此指定可执行文件的文件名
    		szCommandLine,      // 命令行参数
    		NULL,           // 默认进程安全性
    		NULL,           // 默认线程安全性
    		FALSE,          // 指定当前进程内的句柄不可以被子进程继承
    		CREATE_NEW_CONSOLE, // 为新进程创建一个新的控制台窗口
    		NULL,           // 使用本进程的环境变量
    		NULL,           // 使用本进程的驱动器和目录
    		&si,
    		&pi);
    
    	if (bRet)
    	{
    		//WaitForSingleObject(pi.hProcess, INFINITE);
    		// 既然我们不使用两个句柄,最好是立刻将它们关闭
    		::CloseHandle(pi.hThread);
    		::CloseHandle(pi.hProcess);
    		
    		printf(" 新进程的进程ID号:%d \n", pi.dwProcessId);
    		printf(" 新进程的主线程ID号:%d \n", pi.dwThreadId);
    		//TerminateProcess(pi.hProcess, 0);
    		
    
    		Sleep(5000);
    		//此行是获取已经打开的cmd窗口,并给它发送字符串
    
    		HWND hcmdwindow = FindWindow("ConsoleWindowClass", "命令提示符");
    		char *cmdstr = "ipconfig";
    		int strcount = strlen(cmdstr);
    		for (size_t i = 0; i < strcount; i++)
    		{
    			SendMessage(hcmdwindow, WM_CHAR, (WPARAM)cmdstr[i], (LPARAM)1);
    		}
    		PostMessage(hcmdwindow, WM_KEYDOWN, VK_RETURN, 1);
    
    
    		HWND hmyapp = FindWindow("Notepad", NULL);
    		HWND hmyappedit1 = FindWindowEx(hmyapp, NULL, "Edit", NULL);
    
    		if (hmyappedit1)
    		{
    			printf("已找到记事本窗口,它的ID是%0x\n", hmyappedit1);
    			char *str = "ipconfig";
    			int count = strlen(str);
    			for (size_t i = 0; i < count; i++)
    			{
    				SendMessage(hmyappedit1, WM_CHAR, (WPARAM)str[i], (LPARAM)1);
    			}
    			PostMessage(hmyappedit1, WM_KEYDOWN, VK_RETURN, 1);
    
    
    		}
    		else
    		{
    			printf("未没找到记事本文件\n");
    
    		}
    
    	}
    
    	system("pause");
    	return 0;
    }
    
    
    
    /*
    HWND hmyapp = FindWindow(NULL,"控制cmd程序");
    HWND hmyappedit = FindWindowEx(hmyapp, NULL , "Edit", NULL);
    SendMessage(hmyappedit, WM_SETTEXT, NULL, (LPARAM)"HELLO");
    SendMessage(hmyappedit, WM_CHAR, (WPARAM)'9', (LPARAM)2);
    
    HWND hmyapp1 = FindWindow("Notepad", NULL);
    HWND hmyappedit1 = FindWindowEx(hmyapp1, NULL, "Edit", NULL);
    SendMessage(hmyappedit1, WM_CHAR, (WPARAM)'9', (LPARAM)2);
    
    HWND hmyapp2 = FindWindow("ConsoleWindowClass", "命令提示符");
    //HWND hmyappedit2 = FindWindowEx(hmyapp1, NULL, "Edit", NULL);
    //SendMessage(hmyapp2, WM_CHAR, (WPARAM)'9', (LPARAM)1);
    //SendMessage(hmyapp2, WM_CHAR, (WPARAM)'8', (LPARAM)1);
    //PostMessage(hmyapp2,WM_KEYDOWN, VK_RETURN, 1);
    //SendMessage(hmyapp2, WM_CHAR, (WPARAM)'8', (LPARAM)1);
    char *str = "ipconfig";
    int count = strlen(str);
    for (size_t i = 0; i < count; i++)
    {
    SendMessage(hmyapp2, WM_CHAR, (WPARAM)str[i], (LPARAM)1);
    }
    PostMessage(hmyapp2, WM_KEYDOWN, VK_RETURN, 1);
    char str1[100];
    scanf_s("%s",str1);
    printf("%d",strlen(str1));
    */
    /*
    for (size_t i = 0; i < strlen(str); i++)
    {
    
    SendMessage(hmyapp2, WM_CHAR, (WPARAM)str1[i], (LPARAM)1);
    
    }
    PostMessage(hmyapp2, WM_KEYDOWN, VK_RETURN, 1);
    */
    

    最后达到的效果如下:

    C语言向cmd窗口多次发送字符跨程序执行命令

    展开全文
  • C语言循环输入字符串#结束写入文件

    千次阅读 2013-08-03 21:00:50
    printf("文件中的数据是%s\n",buffer); }while(1); } void my_write(int fd) { int size;int count=0; char buffer[BUF_SIZE]; do { memset(buffer,'\0',BUF_SIZE); printf("要写入的数据是\t"); ...


    #include <stdio.h>
    #include <error.h>
    #include <stdlib.h>
    #include <fcntl.h>
    #include <string.h>
    #define BUF_SIZE 128
    void my_read(int fd)
    {
    	int size;
    	char buffer[BUF_SIZE];
    	do
    	{		
    		memset(buffer,'\0',BUF_SIZE);
    		size=read(fd,buffer,BUF_SIZE);
    		printf("size=%d\n",size);
    		if(size==0)
    		{
    			printf("到达文件末尾\n");
    			return;
    		}
    		else if(size<0)
    		{
    			printf("读取文件出现错误\n");
    			exit(1);
    		}
    		else
    			printf("文件中的数据是%s\n",buffer);
    	}while(1);
    }
    void my_write(int fd)
    {
    	int size;int count=0;
    	char buffer[BUF_SIZE];
    	do
    	{	
    		memset(buffer,'\0',BUF_SIZE);
    		printf("要写入的数据是\t");
    		fgets(buffer,BUF_SIZE,stdin);
    		size=write(fd,buffer,strlen(buffer));
    		printf("size=%d\n",size);
    		if(size<0)
    			printf("写入失败\n");
    		else if(size==0)
    			printf("没有写入\n");
    		else
    			printf("写入成功\n");
    	}while(strcmp(buffer,"#\n")!=0);
    }
    int main(int argc ,char **argv)
    {
    	int fd=-1;
    	if(argc<=1)
    	{
    		printf("enter right filename\n");
    		return -1;
    	}
    	fd=open(argv[1],O_CREAT|O_RDWR|O_TRUNC,0644);//创建文件
    	if(fd==-1)
    	{
    		perror("create error");
    		return -2;
    	}
    	my_write(fd);
    	lseek(fd,0,SEEK_SET);
    	my_read(fd);
    }


    展开全文
  • 将键盘输入的字符串(该字符串只包含字母和*)写入文件中。打开该文件,读出字符串。删除串中字母之间的*号,并将新串存放到另一个文件中。比如,字符串*a**B*cd**,删除字母...
  • c语言字符串写入文件

    万次阅读 多人点赞 2014-09-08 11:00:05
    mode有下列几种形态字符串: r 以只读方式打开文件,该文件必须存在。 r+ 以可读写方式打开文件,该文件必须存在。 rb+ 读写打开一个二进制文件,允许读数据。 rw+ 读写打开一个文本文件,允许读和写。 ...
  • 把把字符串写入文件,基本示例如下: FILE *fp; char s[]= "hello world!"; char c = '\n'; fp = fopen("file.txt","a"); fprintf(fp,"%s",s); //字符串使用%s fprintf(fp,"%c",c); //字符使用%c fclose...
  • strtok字符串分割函数strtok使用char *p指针获取字符串地址首先需要 p= strtok (s,""); //""内为分割字符,用双引//第一次使用strtok括号内前一个为原字符串if(p) printf("%s",p);...
  • C语言字符串常用操作函数C语言字符串文件操作常用操作函数标准输入/输出重定向文件操作补充 C语言字符串文件操作常用操作函数 字符串输出 - puts int puts(const char *str) 字符串写入到标准输出 stdout 字符...
  • 有一个.ini文件,里面有一些数据,为了提高读写的速率,需要把这些数据提取出来写入二进制文件
  • 字符及字符串写入读出:格式化读写函数:其他函数:符号和格式部分:常用文件输入输出符号格式及标准常用应用对象为文件的库函数简介:文件的创建打开阅读数据块的写入读出字符串及字符的写入读出...
  • 说明:该程序实现三个... 将加密字符串写入文件:void pushFile(char* ch, char* fname); 读取文件中加密字符串:char* popFile(char* ch,char* fname); 分析: 动态内存分配:(char*)malloc(sizeof(char)*100)...
  • typedef struct s{ ... printf("该字符串已经存在,请更换一个:"); scanf("%s",p.name); } fwrite(&p,sizeof(student),1,fp); } 在printf哪里显示程序停止工作!!!!!!!!!求解啊
  • C语言实现写入日志文件

    千次阅读 2013-03-07 16:00:16
    C语言实现写入日志文件 #include #include #include #include #ifdef WIN32 #include #else #include // linux下头文件 #endif #define FILE_MAX_SIZE (1024*1024) /* 获得当前时间字符串 @param buffer...
  • c语言实现的文件读写,字符串操作 读出字符串,排序后写入文件,VS2008
  • fputs( )函数用来向指定的文本文件写入一个字符串,调用格式为: fputs(s,fp);//视角:从左往右看 s:要写入的字符串 可以是字符数组名,字符型指针,字符串常量 fp:文件指针 相关说明: 字符串s的结束符’\0’...
  • 一个文件的内容大致是userid=AAAAAA,inname=XXXXXXXX,如何提取inname后的字符串,并写入到一个新文件中?
  • printf("请输入字符串"); scanf("%s",str); int fd = open("a.txt",O_WRONLY|O_CREAT|O_TRUNC,0644); assert(fd != -1); if(fd == -1) exit(0); int size = strlen(str); int i=0; for(;i;i++) { if...
  • gets(char buffer[]) 从标准输入读取一行, 并去掉换行符, 在字符串末尾增加 '\0' 字符, 写入到缓冲区  成功则返回 buffer 的地址, 出错或者遇到文件结尾则返回空指针, 使用 stdio 的 NULL 表示 fgets(char buffer...

空空如也

空空如也

1 2 3 4 5 ... 18
收藏数 352
精华内容 140
关键字:

c语言文件写入字符串

c语言 订阅