下列程序的功能是:把s字符串中所有的字符左移一个位置,串中的第一个字符移到最后。请编制函数chg(char *s)实现程序要求,最后调用函数readwriteDat( )把结果输出到out61.dat文件中。
例如:s字符串中原有内容为Mn,123xyZ,则调用该函数后,结果为n,123xyZM。
注意:部分源程序已给出。
请勿改动主函数main()和输入输出函数readwriteDAT()的内容。
试题程序:
#include
#include
#include
#define N 81
void readwriteDAT();
void chg(char *s)
{
}
void main()
{
char a[N];
system("CLS");
printf("Enter a string :");
gets(a);
printf("The original string is :");
puts(a);
chg(a);
printf("The string after modified :");
puts(a);
readwriteDAT();
}
void readwriteDAT()
{ int i;
char a[N];
unsigned char *p;
FILE *rf,*wf;
rf=fopen("in61.dat","r");
wf=fopen("out61.dat","w");
for(i=0;i<10;i++)
{ fgets(a,80,rf);
p=strchr(a,'\n');
if(p) *p=0;
chg(a);
fprintf(wf,"%s\n",a);
}
fclose(rf);
fclose(wf);
}
【答案】
void chg(char *s)
{
int i,str; /*定义变量,保存字符串长度*/
char ch; /*定义字符暂存变量*/
str=strlen(s); /*求字符串的长度*/
ch=*s; /*将第一个字符暂赋给ch*/
for(i=0;i *(s+i)=*(s+i+1); *(s+str-1)=ch; /*将第一个字符移到最后*/ } 【解析】本题考查用指针访问字符串的方法。 首先,通过字符串处理函数(strlen())求出字符串的长度,保存第一个字符。 然后,利用一个for循环将字符串依次左移一位。 最后,将保存的第一个字符移到最后。
北京 | 天津 | 上海 | 江苏 | 山东 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
广东 | 河北 | 湖南 | 广西 | 河南 |
海南 | 湖北 | 四川 | 重庆 | 云南 |
贵州 | 西藏 | 新疆 | 陕西 | 山西 |
宁夏 | 甘肃 | 青海 | 辽宁 | 吉林 |
黑龙江 | 内蒙古 |