十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
交换函数很好写。
专注于为中小企业提供做网站、成都网站建设服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业安平免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了成百上千企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。
比较难的读文件。文件格式 与 读语句要 相配。 特别是 多余 的 空行和回车键。
调试时用 printf 语句 检查 读得对不对。
fgets() 函数可用来读整行的字符串,含回车键。
#include stdio.h
#includestdlib.h
void jh(char *a, char *b){
char x[100];
strcpy(x,a),strcpy(a,b),strcpy(b,x);
}
int main(){
FILE *fp;
int n,i,j;
char a[100];
char b[100];
char ch;
if((fp=fopen("2.2.txt","r"))==NULL){
printf("Error");
exit(0);
}
fgets(a,100,fp);
sscanf(a,"%d",n);
//printf("n=%d\n",n);
for(j=1;j=n;j++){
fgets(a[0],100,fp);
//printf("read a: %s",a);
fgets(b[0],100,fp);
// printf("read b: %s",b);
printf("Case %d\n",j);
jh(a,b);
printf("%s",a);
printf("%s",b);
fgets(a[0],100,fp); // 假定2组数间只有一个空白行,则用它跳过。
}
fclose(fp);
return 0;
}
替换函数主要有strtr(),str_repalce()这两个函数。
首先针对strtr函数第一种方式:
我们看看下面的举例:
?php
echo strtr("I Love you","Lo","lO");
?
得到的结果是:
I lOve yOu
这个结果提醒我们:
1.strtr它是区分大小写的
2.strtr的替换是很特殊的,你注意看后面那个yOu,中间的O被替换的,这显然不是我们的本意。
再举一个特殊例子,说明这个php的sttr函数的怪异
?php
echo strtr("I Love you","Love","");
?
结果是:
I Love you
什么也不会改变,所以strtr需要注意的是:
3.不能被替换为空,也就是末位那个参数不能是空字符串,当然空格是可以的。
再次举例strtr函数的另一种情况:
?php
echo strtr("I Loves you","Love","lOvEA");
?
结果是:
I lOvEs yOu
注意看第三个参数的A,在结果中并没有出现。
4.我不建议用strtr以少换多。
ok,既然这个strtr函数挺麻烦为什么还要用呢?
原因是,它的速度很快。据说,strtr 比 str_replace 快四倍。
5.能用strtr函数的时候一定要用。
第二种情况:
strtr(string,array)
6.strtr符合意愿的使用方法
?php
$table_change = array('you'='her sister');
echo strtr("I Love you",$table_change);
?
结果为:
I Love her sister
7.小技巧:你想到替换什么你就往数组加什么
比如:
?php
$table_change = array('you'='her sister');
$table_change += array('Love' = 'hate');
echo strtr("I Love you",$table_change);
?
结果是:
I hate her sister
再次提醒那个Love 写成love 是行不通的哦。
字符串取代。
语法: string str_replace(string needle, string str, string haystack);
返回值: 字符串
函数种类: 资料处理
内容说明
本函数将字符串 str 代入 haystack 字符串中,将所有的 needle 置换成 str。
下例将 %body% 以 black 取代
?php
$bodytag = str_replace("%body%", "black", "body text=%body%");
echo $bodytag;
?
格式:
[@str_replace("要替换的旧内容", "要取代原内容的新字符", $被替换内容的变量名)]
[@str_replace(array('旧1','旧2','旧3'), array('新1','新2','新3'), $被替换内容的变量名)]
[@str_replace(array('旧1','旧2','旧3'), '新内容', $被替换内容的变量名)]
实例:
多对一替换:想把内容字段里所有的p/p标签清除掉,替换成空 [@str_replace(array('p','/p'), '', $Content)]
一对一替换:想把内容字段里所有的br标签换成p [@str_replace('br', 'p', $Content)]
多对多替换:想把内容字段里的br换成br /, 同时p换hr,把/p全清除 [@str_replace(array('br', 'p','/p'), array('br /','hr',''), $Content)]
这是因为:file=fopen("/tmp/test/test","a+");
模式 “a+” 中的 a 规定以只写打开,保留。
因此你不能读,只能写。写的时候只能在的末尾开始写。
即使你将重新定位过,
在执行写操作的时候,
回到的末尾了。
也就是被保护起来,你是无法操作的。
无法操作的定义是:不能再对执行添加,删除,插入等。
因此,你要在的开头插入数据,可能要绕个弯子:
1.用只读模式("a") 先读出,保存到内存
2.用只写模式(“w”)清除
3.文件开头插入的信息。
4.再追加(保存在内存)
当然如果在文件末尾添加就方便多了,用 "a" 模式一步到位。
下面使用这种思路进行插入信息的示例代码:
#include stdio.h
#include stdlib.h
#includestring.h
const int MAX_FILE_SIZE = 100;
//读取文件内容
int fileRead(char fileName[],char content[],int* content_len)
{
FILE *infile;
char ch;
infile=fopen(fileName,"r");
*content_len=0;
if(infile==NULL)
{
printf("get infile eroor\n");
return 0;
}
else
{
rewind(infile);
while(EOF!=(ch=fgetc(infile)))
{
content[(*content_len)++]=ch;
}
}
fclose(infile);
return 1;
}
//在文件末尾追加内容
int fileAppend(char fileName[] ,char content[],int content_len)
{
FILE *outfile;
outfile=fopen(fileName,"a");
fwrite(content,content_len,1,outfile);
fclose(outfile);
}
int fileClear(char fileName[])
{
FILE *file = fopen(fileName,"w");
fclose(file);
}
//在文件开头插入内容
int insetMessageInfile(char fileName[] ,char message[],int message_len)
{
char content[MAX_FILE_SIZE];
int content_len=0;
fileRead(fileName,content,content_len);
fileClear(fileName);
fileAppend(fileName,message,strlen(message));
fileAppend(fileName,content,content_len);
}
int main(void) {
char fileName[] = "data.txt";
char msg[3]="12";
//文件内容缓存区
char content[MAX_FILE_SIZE];
int content_len=0;
int i;
fileRead(fileName,content,content_len);
for(i=0;icontent_len;i++) printf("%c",content[i]);
printf("\n");
insetMessageInfile("data.txt",msg,strlen(msg));
fileRead(fileName,content,content_len);
for(i=0;icontent_len;i++) printf("%c",content[i]);
printf("\n");
return EXIT_SUCCESS;
}
concat 是 concatenate 的简短写法。
strcat 用于2个字符串 的 concatenate 操作,即把一个字符串 粘到另一个字符串末端,组成一个合起来的新字符串。这里的 cat 不是猫,而是concatenate。
c 语言中没有 名叫 concat 的函数。若有,应当是自定义函数,例如可以把多个字符串连接起来的自定义函数。
方法很多。
简单点,字符组成猫图像,也可以用网上现成猫符号图像,或点阵图,复制到文件,然后读取到字符数组打印。
复杂点,使用fopen读取二进制图片文件,根据图片类型,建立对应结构体,读取出文件流中的图片头信息,图片信息,调色板数据,图片数据。其中图片数据就包含了图片颜色信息,比如24位图片,一个像素中三原色信息分别占1个字节。
当然,你也可以用其他更方便的编程语言处理图像,比如matlab、python,或OpenCV工具。