小编Mar*_*rco的帖子

结构操作数组

我有一个这个结构的数组:

typedef struct
{
    char dni[9];
    char nombre [100], apellido [100];
    double monto_adeudado;
} t_datos;
Run Code Online (Sandbox Code Playgroud)

我需要将整个数组复制到另一个数组中,但有这个限制:如果两个或多个值具有相同的dni值,则只将一个对象输出到结果数组中,并且值monto_adeudado将是具有相同dni值的所有元素的总和.我写了一些代码,但它没有正常工作,只有当两个值具有相同的dni值时它才能正常工作.我将"0"设置dni为我已经添加的元素的值.

int main()
{
    int i = 0, x = 0, y = 0, ret = 1;
    t_datos arr[3];
    t_datos aux[3];
    char *b = "0";

    for(i = 0; i < 3; i++)
    {
         for(x = i + 1; x < 3; x++)
         {
             ret = strcmp(arr[i].dni, arr[x].dni);

             if(ret == 0)
             {
                 aux[y] = arr[i];
                 aux[y].monto_adeudado …
Run Code Online (Sandbox Code Playgroud)

c arrays string struct

0
推荐指数
1
解决办法
67
查看次数

检查C中的字符串是否为回文结构

我有一个关于这个代码的问题,我正在写一个练习.我要检查字符串是否是回文.我无法更改函数的声明.当所有字母相同时(例如"aaaa"),函数只返回1,但如果我用其他回文(如"anna")充电,则函数返回0,我无法弄清楚为什么会出现这种情况.谢谢!

char* cargar (char*);
int pali (char*);

int main()
{ 
   char*texto=NULL;
   texto=cargar(texto);
   int res=pali(texto);
   if(res==1){printf("\nPalindrome");}
   else printf("\nNot palindrome");

   return 0;
}

char* cargar (char*texto)
{
   char letra;
   int i=0;
   texto=malloc(sizeof(char));
   letra=getche();
   *(texto+i)=letra;
   while(letra!='\r'){
      i++;
      texto=realloc(texto,(i+1)*sizeof(char));
      letra=getche();
      *(texto+i)=letra;}
   *(texto+i)='\0';      
   return texto;
}

int pali (char* texto)
{
   int i;
   for(i=0;*(texto+i)!='\0';i++){
   }i--;
   if(i==0||i==1){return 1;}

   if(*texto==*(texto+i)){
      return pali(++texto);
   }
   else return 0;
}
Run Code Online (Sandbox Code Playgroud)

c string recursion dynamic palindrome

-1
推荐指数
1
解决办法
1826
查看次数

标签 统计

c ×2

string ×2

arrays ×1

dynamic ×1

palindrome ×1

recursion ×1

struct ×1