C和指针第一个程序就没看懂,求解释啊

C和指针第一个程序就没看懂,求解释啊,第1张

#include<stdio.h>

#include<stdlib.h>

#include<string.h>

#define MAX_COLS 20 // 宏定义常量 MAX_COLS 为20

#define MAX_INPUT 1000// 宏定义常量 MAX_INPUT 为 1000

int read_column_numbers(int columns[],int max)

{

int num=0

int ch

while(num<max&&scanf("%d",&columns[num])==1&&columns[num]>=0)//判断输入的值是否为正数

num=num+1// 统计有好多个数

if(num%2!=0)//判断输入的个数是否是偶数

{

puts("Last column number is not paired.")

exit( EXIT_FALLURE)//没有成功地执行,强制结束程序

}

while((ch=getchar())!=EOF&&ch!='\n')

return num

}

void rearrange(char *output,char const *input,inst n_columns,int const column[])

{

int col

int output_col

int len

len=strlen(input)//计算字符串长度

output_col=0

for(col=0col<n_columnscol=col+2)

{

int nchars=columns[col+1]-columns[col]+1

if(columns[col]>=len||output_col==MAX_INPUT-1)

break

if(output_col+nchars>MAX_INPUT-1)

nchars=MAX_INPUT-output_col-1

strncpy(output+output_col,input+columns[col],nchars)

output_col=output_col+nchars

}

output[output_col]='\0'

}

int main()

{

int n_columns

int columns[MAX_COLS]

char input[MAX_INPUT]

char output[MAX_INPUT]

n_columns=read_column_numbers(columns,MAX_COLS)

while(gets(input)!=NULL)

{

printf("Original input :%S\n",input)

rearrange(output,input,n_columns,columns)

printf("Rearrange line:%s\n",output)

}

return EXIT_SUCCESS//执行成功

}

首先依次输入数字,当遇见负数时停止。此时如果输入的数字个数是奇数的话就输出"last column number is not paired”然后结束。如果输入的数字是偶数的话,再输入一个字符串,将输入的数字按顺序两个一组,后面的减去前面的加1,例如9-4+1,得到的此数如果小于字符串长度,就将这个字符串的第4个字符后面的9-4+1个字符复制到另一个字符串X,然后再进行下组个数,将通过下组个数得到的字符串复制到X的后面,依次进行直到两数之差大于字符串长度或者数没有了,然后输出字符串X

#include<stdio.h>

#include<string.h>

char

*fun(char

*s,char

*t)//函数功能是在字符串S中找字符串T

{

char

*p,*r,*a

a=NULL//是一个标志,开始没查找到

//开始s=&s[0]

while(*s)//从S

第一个字符开始查找,直到遇到'\0'

{

p=s

r=t

while(*r)//从T

的第一个字符开始查找,直到遇到'\0'

if(*r==*p)//如果在S字符串中找到了第一个

T字符串的T[0],

{

r++//在比较T[1]

t[2]....

p++//同上

}

else

break

if

(*r=='\0')

a=s//表明查找到了

s++

}

return

a//返回NULL没到到,否则找到了

}

main()

{

char

s[100],t[100],*p

printf("\n

please

enter

string

S:")

scanf("%s",&s)

printf("\n

please

enter

string

T:")

scanf("%s",&t)

p=fun(s,t)

if(p)//真,为找到了

printf("\n

the

result

is

:%s\n",p)

else

printf("\n

not

found!\n")

}


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/8131206.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-13
下一篇2023-04-13

发表评论

登录后才能评论

评论列表(0条)

    保存