-2

例如:

这是我尝试过的:

#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;   
}

如何使用第三个指针使其工作并让它存储p1p2

4

4 回答 4

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;   
}
于 2012-10-22T22:56:31.303 回答
0

除了不好的编码习惯(我已经做了一段时间的 C 语言,仍然没有修复一些 em),我看到了一个错误:mystrcat(string1, string2)。返回类型是 char,但函数本身具有“在其中”的指针(很难解释)。所以它应该只是 mystrcat(string1, string2)

于 2012-10-22T22:52:19.627 回答
0

听起来您想编写一个函数来连接字符串。为此,您需要能够可视化脑海中的字符串、2 个输入字符串和生成的字符串。

这是一个应该解决它的算法:

  • 创建一个结果字符串,其空间足以容纳给定输入中的字符总数加上 1 用于终止 nul char。
  • 将第一个字符串中的字节复制到结果中。
  • 将 esconds 字符串中的字符附加到结果中
  • 附加一个空字符
  • 返回结果

编程是看到问题、设计算法然后用编程语言实现的能力。

于 2012-10-22T23:02:31.240 回答
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
于 2012-10-27T19:01:09.737 回答