下列程序的功能是:把s字符串中所有的字符左移一個(gè)位置,串中的第一個(gè)字符移到最后。請(qǐng)編制函數(shù)chg(char *s)實(shí)現(xiàn)程序要求,最后調(diào)用函數(shù)readwriteDat( )把結(jié)果輸出到out61.dat文件中。
例如:s字符串中原有內(nèi)容為Mn,123xyZ,則調(diào)用該函數(shù)后,結(jié)果為n,123xyZM。
注意:部分源程序已給出。
請(qǐng)勿改動(dòng)主函數(shù)main()和輸入輸出函數(shù)readwriteDAT()的內(nèi)容。
試題程序:
#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; /*定義變量,保存字符串長(zhǎng)度*/
char ch; /*定義字符暫存變量*/
str=strlen(s); /*求字符串的長(zhǎng)度*/
ch=*s; /*將第一個(gè)字符暫賦給ch*/
for(i=0;i *(s+i)=*(s+i+1); *(s+str-1)=ch; /*將第一個(gè)字符移到最后*/ } 【解析】本題考查用指針訪(fǎng)問(wèn)字符串的方法。 首先,通過(guò)字符串處理函數(shù)(strlen())求出字符串的長(zhǎng)度,保存第一個(gè)字符。 然后,利用一個(gè)for循環(huán)將字符串依次左移一位。 最后,將保存的第一個(gè)字符移到最后。
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |