我在这个C程序中使用指针是否正确?

时间:2012-10-22 22:49:48

标签: c pointers

例如:

这就是我的尝试:

#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个指针使其工作并将其存储为p1p2

4 个答案:

答案 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个输入字符串和结果字符串。

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

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

编程是指查看问题,设计算法然后以编程语言实现的能力。

答案 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