例如:
这就是我的尝试:
#include "stdafx.h"
#include <ctype.h>
char *mystrcat(char *s1p, char *s2p);
char main(void)
{
...........................
}
char *mystrcat(char *s1p, char *s2p)
{
printf("whatever = %s%s\n", s1p, s2p);
return 0;
}
如何使用第3个指针使其工作并将其存储为p1
和p2
?
答案 0 :(得分:3)
替换:*mystrcat(string1, string2);
使用:char *string3 = mystrcat(string1, string2);
如果你的老师想要char *而不是
char string1[80];
char string2[80];
你可以做到
char *string1 = malloc(80*sizeof(char));
char *string2 = malloc(80*sizeof(char));
连接你的字符串:
char *mystrcat(char *s1p,char *s2p) {
char *cat = malloc(2*80*sizeof(char));
int i = 0;
while(s1p[i]!='\o') {
cat[i] = s1p[i];
i++;
}
int j = 0;
while(s2p[j]!='\o') {
cat[i+j] = s2p[j];
j++;
}
return cat;
}
答案 1 :(得分:0)
不好的编码习惯(我已经做了一段时间的C,仍然没有修复一些em),我看到一个错误: mystrcat(string1,string2)。返回类型是char ,但函数本身的指针“在其中”(很难解释)。所以它应该只是mystrcat(string1,string2)
答案 2 :(得分:0)
听起来你想编写一个连接字符串的函数。要做到这一点,你需要能够看到头部的字符串,2个输入字符串和结果字符串。
这是一个应该解决它的算法:
编程是指查看问题,设计算法然后以编程语言实现的能力。
答案 3 :(得分:0)
#include "stdafx.h"
#include <stdlib.h>
#include <string.h>
#include <Windows.h>
#include <ctype.h>
char *mystrcat(char*s1p, char*s2p); // Prototype
int main(void)
{
char *string1 = malloc(80*sizeof(char));
char *string2 = malloc(80*sizeof(char));
printf("Enter in string 1");
scanf("%s", string1);
printf("Enter in string 2");
scanf("%s", string2);
char *mystrcat((string1,string2));
return 0;
}
char *mystrcat(char *s1p,char *s2p)
{
char *cat = malloc(2*80*sizeof(char));
int i = 0;
while(s1p[i]!='\o') {
cat[i] = s1p[i];
i++;
}
int j = 0;
while(s2p[j]!='\o') {
cat[i+j] = s2p[j];
j++;
}
return cat;
}
这是我到目前为止所提供的所有帮助的代码,我包括从上到下,我使用MSVS 2012以及我发布这个的原因因为我在'malloc'上有错误作为研究员的错误
3 IntelliSense: a value of type "void *" cannot be used to initialize an entity of type "char *" c:\Users\Sid\Documents\Visual Studio 2012\Projects\PORTFOLIO QUESTION 3\PORTFOLIO QUESTION 3\PORTFOLIO QUESTION 3.cpp 32