[英]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.