C語言學習2021/2/6
阿新 • • 發佈:2021-02-07
譚浩強第八章指標習題7.一個n個字元的字串,寫一個函式把第m個字元起的字元複製成另一個字串
應該要用指標做的,但是自己寫的時候用的陣列,因為對陣列比指標熟練一點,但是後面把答案的指標方法也打了一遍。
// 書第八章指標習題7.一個n個字元的字串,寫一個函式把第m個字元起的字元複製成另一個字串.cpp : 此檔案包含 "main" 函式。程式執行將在此處開始並結束。
//
#include<stdio.h>
#include<string.h>
//自己寫的陣列方法
int main()
{
void new(char s1[ 100]);
char s1[100];
printf("請輸入一個字串:\n");
gets(s1);
new(s1);
return 0;
}
void new(char s1[100])
{
char s2[100];
int m,n,i=0,j=0;
n = strlen(s1);
printf("想要開始複製的字元位置:");
scanf("%d", &m);
j = m - 1;
if (n < m)
printf("input error!");
else
while (s1[ j] != '\0')
{
s2[i] = s1[j];
i++;
j++;
}
s2[i] = '\0';
printf("%s\n",s2);
}
執行結果:
自己寫的時候開始輸出結果後面有燙燙燙,後來百度後在字串後面加’\0’後就好了。
//指標方法答案
int main()
{
void copystring(char *p1, char *p2, int m);
int m;
char str1[20], str2[20];
printf("input string:");
gets(str1);
printf( "which character that begin to copy:");
scanf("%d", &m);
if (strlen(str1) < m)
printf("input error!");
else
{
copystring(str1, str2, m);
printf("result:%s\n", str2);
}
return 0;
}
void copystring(char *p1, char *p2, int m)
{
int n = 0;
while (n < m - 1)
{
n++;
p1++;
}
while (*p1 != '\0')
{
*p2 = *p1;
p1++;
p2++;
}
*p2 = '\0';
}
執行結果: