1. c语言中把文件中的空格去除
第一种:使用位域限制读取的长度;
第二种:可以直接按照结构体来读写;
实例代码如下:
#include"stdafx.h"
#include<cstdio>
#include<cstdlib>
#include<cstring>
structRoommate{
charname[6];
charNO[8];
charaddr[10];
};
int_tmain(intargc,_TCHAR*argv[])
{
structRoommateRom[2]={0};
FILE*file=NULL;
if(!(file=fopen("a.txt","w"))){
printf("CreateFilefailed! ");
exit(-1);
}
printf(":NameNOAddr ");
for(inti=0;i<2;++i){
scanf("%s%s%s",Rom[0].name,Rom[0].NO,Rom[0].addr);
fwrite((constvoid*)&Rom[0],sizeof(structRoommate),1,file);
}
fclose(file);
/*Readfromfile*/
file=NULL;
if(!(file=fopen("a.txt","r"))){
printf("CreateFilefailed! ");
exit(-1);
}
printf("Readfromthefile:NameNOAddr ");
fread((void*)Rom,sizeof(structRoommate),2,file);
for(inti=0;i<2;++i){
printf("i=%dName:%s NO:%s Addr:%s ",i,Rom[i].name,Rom[i].NO,Rom[i].addr);
}
fclose(file);
while(getchar());
return0;
}
2. C语言完善程序,删除字符串中的所有空格
*p='\0'或则str[i]='\0'的意思还得从上面的那个循环开始说起,while(*P)何时才为假吗?必须当p指向字符版串的结尾标志才行,权也就是p指向了'\0',于是*p=0,于是循环退出,循环里面就是把空格去掉,这里的去掉的方法是把以前空格的位置用*p对其赋值,*P的值是空格后的字符,例如ab
cd
efg'\0'后来会变为abcdefg为什么这里没有'\0',那是因为还没来得及赋值给它就已经退出循环了,所以必须再循环后面加个'\0'。字符串一定要有'\0'做结尾标志,这个就不用说了
3. c语言 字符串去掉空格
//修改如下:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
voidtrimSpace(char*instr,char*outstr){
inti=0;
intj=0;//因为去掉空格后的字符串的字符个数和去掉空格之前不一样,需要额外增加一个变量用来标记下标。
for(i=0;i<(int)strlen(instr);i++)
{
if((int)(*(instr+i))==32)
{
continue;
}
else{
*(outstr+j)=*(instr+i);
j++;
}
printf("%c",*(outstr+i));//这个位置可以打印出来去掉空格之后的字符串
}
*(outstr+j)='