C程序设计 (第四版) 谭浩强 习题7.6
习题 7.6 写一个函数,将两个字符串连接。
IDE工具:VS2010
Note: 使用不同的IDE工具可能有部分差异。
代码块
方法1:使用数组
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void concatenate(char newstr[], char str1[], char str2[]){
int len1 = strlen(str1);
int len2 = strlen(str2);
int k = 0;
for(int i = 0; i < len1; i++){
newstr[k++] = str1[i];
}
for(int j = 0; j < len2; j++){
newstr[k++] = str2[j];
}
newstr[k] = '\0';
}
int main(){
char str1[50], str2[50], newstr[100];
printf("Enter string 1: ");
gets(str1);
printf("Enter string 2: ");
gets(str2);
concatenate(newstr, str1, str2);
printf("New string: %s\n", newstr);
system("pause");
return 0;
}
方法2:使用指针、动态分配内存
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N 50
void initialStr(char **str, int n){
*str = (char*)malloc(n * sizeof(char));
}
void inputStr(char *str, int n){
printf("Enter string %d: ", n);
gets(str);
}
void concatenate(char newstr[], char str1[], char str2[]){
int len1 = strlen(str1);
int len2 = strlen(str2);
int k = 0;
for(int i = 0; i < len1; i++){
newstr[k++] = str1[i];
}
for(int j = 0; j < len2; j++){
newstr[k++] = str2[j];
}
newstr[k] = '\0';
}
void outputStr(char *str){
printf("New String: %s\n", str);
}
int main(){
char *str1 = NULL;
char *str2 = NULL;
char *newstr = NULL;
initialStr(&str1, N);
initialStr(&str2, N);
initialStr(&newstr, N*2);
inputStr(str1, 1);
inputStr(str2, 2);
concatenate(newstr, str1, str2);
outputStr(newstr);
free(str1);
free(str2);
free(newstr);
system("pause");
return 0;
}