繁体   English   中英

C strcpy和char

[英]C strcpy and char

我需要编写一个代码来完成此操作:您输入姓名,名字和成绩。 仅对于> = 10的年级,您将以倒序的方式打印学生的姓名和名字。 范例:

Bob
Dylan
12

Robert
Patt
9

Chris
Strozy
15

Josh
Sta
11

会给 :

克里斯·斯特罗兹(Chris Strozy)15鲍勃·迪伦(Bob Dylan)12乔什·斯塔(Josh Sta)11。

我的错误在strcpy行上:

函数'strncpy'|的参数太少 赋值'strncpy'的参数1使指针从整数开始而无需强制转换

 char tab_nom[N][M] ;
 char tab_prenom[N][M] ;
 float tab_notes[N];
 char tmp_n, tmp_p;
 int i,j,tmp;

for (i=0;i<N;i++)
 {
  printf("Saisissez le nom %d :", i+1);
  scanf("%s",tab_nom[i]);
  printf("Saisissez le prenom %d :", i+1);
  scanf("%s",tab_prenom[i]);
  printf("Saisissez la note %d :", i+1);
  scanf("%f",&tab_notes[i]);
  }

 for (i=0;i<N;i++)
 {
      for(j=0; j< N-1 ; j++)
      {
          if (tab_notes[j] < tab_notes[j+1])
          {
              tmp=tab_notes[j];
              tab_notes[j]=tab_notes[j+1];
              tab_notes[j+1]=tmp;

              strcpy(tmp_n,tab_nom[j]);
              strcpy(tab_nom[j],tab_nom[j+1]);
              strcpy(tab_nom[j+1],tmp_n);

              strcpy(tmp_p,tab_prenom[j]);
              strcpy(tab_prenom[j],tab_prenom[j+1]);
              strcpy(tab_prenom[j+1],tmp_p);

          }
      }
}

temp_n是单个char strcpy需要char*

strncpy(tmp_n, tab_nom[j]);
/* ... */
strncpy(tmp_p,tab_prenom[j]);

您正在尝试将字符串复制为单个字符...而且strncpy具有第三个参数( size )。 请尝试使用strcpy

首先,您正在使用strncpy而不是strcpy

strncpy的定义如下

char *strncpy(char *restrict s1, const char *restrict s2, size_t n);

所以我想您想将代码更改为

strncpy(tmp_n,tab_nom[j],sizeof(tmp_n));

另外,您可以使用strcpy(tmp_n, tab_nom[j]); 没有任何编译错误。

暂无
暂无

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

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