繁体   English   中英

C中的char指针和strcpy

[英]char pointers and strcpy in C

首先让我开始说我已经阅读了与此主题相关的所有问题,但无法找到解决我问题的方法。 所有的答案似乎是停止使用指针和字符(我需要做)或关于其他结构。

我需要创建一个返回整数的函数,但也保存了进程的步骤,我将使用snprintf和指针保存为字符。 我将离开基本的想法,但它比我将要的更复杂。

#include <stdio.h>
#include <string.h>


int sum_and_diff (int a, int b, int *res, char *text);

int main(void){
    int b = 2;
    int diff;
    char texto;

    printf("La suma de 5 y %d es %d\n", b, sum_and_diff(5, b, &diff, &texto));
    printf("La diferencia de 5 y %d es %d\n", b, diff);
    printf("El texto es %s\n", texto);
}



int sum_and_diff (int a, int b, int *res, char *text){
    char texto;
    int sum;

    //text = malloc(sizeof(char) * 254);
    //text = (char *)malloc(sizeof(char) * 254);
    sum = a + b;
    *res = a - b;
    texto = "Hola";
    strcpy(*text, texto);
    //strcpy(text, texto);
    return sum;
}

我想使用这个例子,因为它显示了如何在函数内部使用指针来获取更多信息,用于获取diff的相同过程不适用于字符类型。

与我的实际程序的唯一区别是变量“texto”从snprintf获取其字符值(做我需要它做的事情,我通过在函数内部引用变量来检查)。 问题是让指针指向变量。

谢谢! 我正在使用gcc 4.9进行编译,如果它有所作为。 评论的东西是我尝试过但没有奏效的东西,也尝试了其他一些细微的变化。

在没有分配的情况下声明指向char的指针是一个错误。 你看到我的代码。 [C]

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define SIZE    8

int sum_and_diff (int a, int b, int *res, char *text);

int main(void)
{
    int b = 2;
    int diff;
    char *texto = (char *)malloc(SIZE);
    if (!texto)
        abort();
    printf("La suma de 5 y %d es %d\n", b, sum_and_diff(5, b, &diff, texto));
    printf("La diferencia de 5 y %d es %d\n", b, diff);
    printf("El texto es %s\n", texto);
    free(texto);
}

int sum_and_diff (int a, int b, int *res, char *text)
{
    char *texto = (char *)malloc(SIZE);
    int sum;
    if (!texto)
        abort();
    sum = a + b;
    *res = a - b;
    texto = "Hola";
    strcpy(text, texto);
    free(texto);
    return sum;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM