C语言字符串拼接和追加
#include
#include
#include
main()
{
char string1[10] = "", string2[10] = "",string3[10]="",string4[100]="";
int r,i=0,j=0;
while ( string1[0] != 'Z')
{
gets(string1);
r = strcmp(string1,string2); //r记录的是判断string1和string2是否相等 如果相等r=0否则r=1
if (!r)//果然两个字符串相等则执行下面代码
{
if(strcmp(string3,string1)) //下面代码的功能是判断是否需要输出
{
i=0; //为了拼接字符串,i和j用来标示位置所在
j=0;
//之后写一段代码类似于下面这样的功能
//string4 = string4+"\n"+string1;
while(string4[i] !='\0')
i++;
while(string1[j] !='\0')
string4[i++]=string1[j++]; //下面两句是拼接最后输出的字符串。如果符合则追加到string4的末尾
string4[i]='\n'; //为了不让他们在一行显示,这里我们追加一次就换一行显示
strcpy(string3,string1);
//为了判断是否要将它显示出来,这里设定个string3来做个标示,如果相同输入的,就只显示一个就可以了
}
}
strcpy(string2,string1);//想一般大家都会想到用指针取值的方式来赋值,那样是不可以的。这能这样写 不可以这样*string2=*string1
}
printf("");
puts(string4);
system("pause");
return 0;
}
/*
《C和指针》64页,即:第四章编程练习第五题。题目如下:
编写一个程序,从标准输入一行一行地读取文本,并完成如下任务:如果文件中有两行或多行相邻的文本内容相同, 那么就打印出其中一行,其余的行不打印。你可以假设文件中的文本行在长度上不会超过128个字符(127个字符外加一个用于终结文本行的换行符)。
考虑下面的输入文件。
This is the first line.
Another line.
And another.
And another.
And another.
And another.
Still more.
Almost done now --
Almost done now --
Another line.
Still more.
Finished!
假定所有的行在尾部没有任何空白(它们在视觉上不可见,但它们却可能使邻近两行在内容上不同),根据这个输入文件,程序应该产生下列输入出:
And another.
Almost done now--
所有内容相同的相邻文本行有一行被打印。
问题补充 2010-09-10 13:01
#include
#include
#include
main()
{
char string1[10] = "", string2[10] = "";
int r;
while ( string1[0] != 'Z'){