簡體   English   中英

將字符串數組作為字符指針傳遞

[英]Passing array of strings as character pointers

我一直在嘗試將字符串數組傳遞給函數。 盡管我知道執行此操作的其他過程,但我特別想確切地知道為什么此特定代碼不起作用

我已經嘗試過以下方式

#include<stdio.h>

void check_number(char* str[])
{
    int sum=0;
    int i=0;
    while(str[0][i]!='/0')
    {
        char a='a';
        sum=sum+str[0][i]-(int)(a);
    }
    printf("number = %d ",sum);
}

int main()
{
    char* str[2];
    printf("Enter a string ");
    scanf("%s",str[0]);

    printf("Enter a string ");
    scanf("%s",str[1]);

    check_number(str);
    return 0;
}

這是已發布代碼中的問題之一,在這里

char* str[2];

str兩個字符指針組成的數組,str[0]str[1]是字符指針,即它們需要使用有效地址進行初始化,但尚未為其分配內存。

scanf("%s",str[0]); /* No memory allocated for str[0] */
scanf("%s",str[1]); /* No memory allocated for str[1] */

在將數據掃描到str[0]str[1]之前,需要為其分配內存。 例如

int main(void)
{
    char* str[2];
    for(int i = 0; i < 2 ; i++) {
        printf("Enter a string ");
        str[i] = malloc(MAX_BUF_SIZE); /*define this macro for no of bytes */
        scanf("%s",str[i]);
    }
    /* do some stuff */
    /* free dynamically allocated memory for each str[index] */
    return 0;
}

另一個問題在這里

while(str[0][i]!='\0') { /* '/0' --> '\0' */
    char a='a';
    sum=sum+str[0][i]-(int)(a); /* what you want to achieve here, please explain */
}

該循環何時終止? 應該有一個循環終止條件,否則它將無限循環。

這行:

char* str[2];

聲明一個數組,該數組包含2個指向char的指針,但是指針不指向有效內存。 您需要在某處保留/分配一些空間。

一種可能的解決方案是在堆棧中僅具有兩個獨立的緩沖區:

const size_t bufferSize = 100;
char str1[bufferSize];
char str2[bufferSize];

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM