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,表示指針變數值不能修改(不能指向別的地方),指向的內容也不能被修改。