c语言C2664
Ⅰ c语言 用指针作为参数,实现交换两个字符串变量的值 error C2664 求大神指导
#include <stdio.h>
#include <string.h>
void swap(char a[100],char b[100]);
int main()
{
char str1[100],str2[100];
printf("input 1:");
gets(str1);
printf("input 2:");
gets(str2);
swap(str1,str2);
printf("str1:%s\nstr2:%s\n",str1,str2);
return 0;
}
void swap(char a[100], char b[100])
{
char t[100];
strcmp(t,a);
strcmp(a,b);
strcmp(b,t);
}
Ⅱ c语言errorc2664
需要修正一个语法错误,一个逻辑错误。
#include<stdio.h>
#include<string.h>
intmain()
{
charmax[20],str[3][20];
inti;
printf("输入三个字符串: ");
for(i=0;i<3;i++)
gets(str[i]);//str的类型是char[2][20],需要改成str[i]
if(strcmp(str[0],str[1])>0)
strcpy(max,str[0]);
else
strcpy(max,str[1]);
if(strcmp(str[2],max)>0)//只有str[2]大于max才进行复制
strcpy(max,str[2]);
printf("三个字符串中的最大串为%s ",max);
return0;
}
Ⅲ 【C语言】 错误 C2664如何解决 不能将参数 1 从“float”转换为“float [ ]”
a[100],换成a
Ⅳ VC++ 6.0 C语言程序中error C2664
#include<stdio.h>
intmain()
{
charcChar1,cChar2,cChar3,cChar4;
cChar1='H';
cChar2='e';
cChar3='l';
cChar4='o';
putchar(cChar1);
putchar(cChar2);
putchar(cChar3);
putchar(cChar3);
putchar(cChar4);
putchar(' ');//这里改为单引号
return0;
}
Ⅳ C语言error C2664该怎么解决
project->setting->c/c++ preprocessor 将 _UNICODE删除即可解决
Ⅵ C语言,error C2664: “atoi”: 不能将参数 1 从“_TCHAR *”转换为“const char *”
这个很简单,问题就出现在atoi(argv[1])) < 1)
这句上;
原因是_TCHAR和CHAR的类型不一样;
你要类型转换才可以;
连接:
http://blog.csdn.net/b_h_l/article/details/7581519
希望可以帮到你~
Ⅶ C语言 error C2664: 'strcmp' : cannot convert parameter 1 from 'char' to 'const char *'错在哪
1.你要注意了,如果你纯粹读入一个字符就应该用getchar()函数而不是scanf(),这是个习惯问题。因为如果你需要输入空格符时候scanf会认为空格用于隔开各部分数据而把空格忽略。
2.strcmp函数适用于比较字符串的,例如strcmp("hello","equal");或者是:
char *s1="hello",*s2="equal";
strcmp(s1,s2);
你的错误就是因为你比较单个字符是否相等而使用了这个函数,正确的做法是直接比较两个字符是否相等:if(a==str[i]) 而不是使用strcmp函数
3.在main函数的最后一个for里头,比较的不应该是for(i=0;i<80;i++);你怎么知道你读入的字符个数是80个?正确的是设置一个len变量,每读入一个字符,len++,在判断有多少个字符一样时,
字符串里有的字符是len个而不是80个。具体你可以看我给你的程序哈。
#include<string.h>
#include<stdio.h>
intmain()
{
chara,str[80];
inti,j=0;
intlen=0;
a=getchar();
for(i=0;i<80;i++)
{
//scanf("%c",&str[i]);
str[i]=getchar();
len++;
if(str[i]==' ')
break;
}
for(i=0;i<len;i++)
{
if(a==str[i])
j++;
else
continue;
}
printf("在字符串中与%c相同的字母有%d个!",a,j);
return0;
}
运行结果:
欢迎提问,不懂的话欢迎提问。
cannot convert parameter 1 from 'char' to 'const char *这句话的意思就是说:
不能讲参数1的char类型转换成一个地址类型,因为我们通过数组保存字符串,一般来说我们知道数组名就可以访问这个字符串,因为数组名是数组第一个元素的地址,他们在内存中是紧挨着的。因此你要判断字符串是否相等,要传递给strcmp的是一个数组的地址。而你实际传递的是一个char(一个整数)。
Ⅷ c语言error c2664
改成gets(str[i]);试试
Ⅸ C语言,字符串, error C2664: 'strlen' : cannot convert parameter 1 from 'char' to 'const char *'
strlen是用来操作字符串的,你用来操作单个字符当然错了
Ⅹ 求助报错 C2664“int login(char [],char [])”: 无法将参数 1 从“const char [6]”转换为“char []”
你看login函数的声明和定义不一样。
函数声明在main函数之前:
int login(char[], char[]);
函数实现在main函数主体之后:
int login(const char username[], const char passworld[])
你需要把两处改成一样。当然目前你调用时传入的参数都是const char *,因此不能有const。如果调用的时候,参数是char *的话,则有没有const都可以。
简单补充一下关于const关键字的说明:
楼上老哥说C语言没有const其实是不对的,C语言当然有const,而且和C++的const是一样的。加上const之后,表示内容不可变。如果是指针类型的变量,则有轻微区别:
const char * 或 char const *:表示此指针指向的内容不能修改(因此编译器不允许将const char *转成char*,因为后者允许修改指向的地址内容;但是反过来是可以的,比方说main函数里可以修改的char数组,可以要求在被调用的函数中不能修改)
char * const:char *类型的指针,且此指针变量的值不能被修改(指向的内容不管)。
所以还有最鬼畜的:const char * const,表示指针变量值不能修改(不能指向别的地方),指向的内容也不能被修改。