1. 程式人生 > 其它 >C語言學習2021/2/6

C語言學習2021/2/6

技術標籤:指標字串c語言

譚浩強第八章指標習題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'; }

執行結果:
在這裡插入圖片描述