2014-10-09 69 views
-2

這是strcpy函數。賦值使指針中的整數無指針C

#include <stdio.h> 
const char *temp1[100]; 
const char *temp2[100]; 
int i,j; 
const int s1; 
const int s2; 
char *in[100]; 
char *stradd(char *str1,char *str2) 
{ int s1,s2; 
    int i,j; 
    *temp1= str1; 
    *temp2= str2; 
    s1 = strsize(*temp1); 
    s2 = strsize(*temp2); 
    while(s1<=s2 || s1>=s2) 
    { 
     for(i=s1,j=0;temp2[j]!='\0';i++,j++) 
      *(str1[i]) = *(str2[j]); 
    } 
    str1[i] = '\0'; 
    return str1; 
} 

int main() 
{ 
    char in[100]; 
    printf("Enter a string:\t"); 
    scanf("%s",in); 
    stradd(in,"Hello"); 
    for(i=0;i<=*(strsize(in));i++) 
    { 
    printf("\n%c",in[i]); 
    } 
    return 0; 
} 



#include <stdio.h> 

char* strsize(const char *s) 
{ int i,j; 
    char *name = s; 
    for(i=0;i<=name[i];i++) 
     j=i+1; 
    return j; 
} 

我得到錯誤s1s2,說賦值時將整數指針不進行強制轉換, 而且,我在*(str1[i]) = *(str2[j]);得到錯誤說無效類型的參數在一元*(* int)。我想把int類型的返回值當作int來處理,我怎麼能這麼做?

+0

提示:什麼是'strsize'的返回類型? – Evert 2014-10-09 14:41:31

+0

,因爲你delcare那些作爲整數,並試圖使它們成爲一個指針... – jgr208 2014-10-09 14:43:30

+0

你似乎有點混淆你的字符串聲明,例如'const char * temp1 [100];'看起來不對。 – 2014-10-09 14:43:33

回答

0

我想你想這個複製使用指針和函數的字符串

#include<stdio.h> 

void copy_string(char*, char*); 

main() 
{ 
    char source[100], target[100]; 

    printf("Enter source string\n"); 
    gets(source); 
if (source && source[0] == '\0') { 
     printf("source is empty\n"); 
     return 0; 
     } 
    copy_string(target, source); 

    printf("Target string is \"%s\"\n", target); 

    return 0; 
} 

void copy_string(char *target, char *source) 
{ 
    while(*source) 
    { 
     *target = *source; 
     source++; 
     target++; 
    } 
    *target = '\0'; 
} 
+0

如果target爲NULL,那麼你的程序將無法工作,並且如果源字符串太大而無法在目標中保存你如何處理這種情況 – 2014-10-09 15:04:56

+0

這只是一個基於OP的簡單程序,以及他對100個字符和東西所做的事情。不需要複雜的內存管理@vinayhunachyal – jgr208 2014-10-09 15:07:08