【问题标题】:How append multiple characters to a string in C?如何将多个字符附加到C中的字符串?
【发布时间】:2020-04-24 03:35:45
【问题描述】:

我正在尝试创建一个函数,该函数将通过读取输入行中的每个字符并将它们插入字符数组来从用户输入中读取字符串。除了将字符附加到数组之外,我已经得到了正确的一切。我可以追加第一个字符,但之后它会停止追加并且只会保存第一个字符。

void getstr(int maxSize, char string[]){
    char item;
    int i = 0;
    for (int i = 0; i < maxSize; i++) {
        scanf("%c", &item);
        if (item == 0 || item == '\n'){
            return;
        }

        string[i] = item;
        i++;
        string[i] = 0;
    }
}

我通过另一个函数调用这个函数,用于从用户那里检索歌曲和艺术家。

void getSong(char song[], char artist[]){
    printf("Please enter a song: ");
    getstr(100, song);
    printf("Please enter an artist: ");
    getstr(100, artist);
}

【问题讨论】:

    标签: c console-application


    【解决方案1】:

    关键问题:

    1. 您将在每个循环中增加 i 两次。只需使用[i+1] 来存储NUL
    2. 您应该循环到i &lt; maxSize-1 以防止在存储终止NUL 时缓冲区溢出。
    void getstr(int maxSize, char string[]){
        char item;
        int i = 0;
        for (int i = 0; i < maxSize-1; i++) {
            scanf("%c", &item);
            if (item == 0 || item == '\n'){
                return;
            }
    
            string[i] = item;
            string[i+1] = 0;
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-01-12
      • 2012-04-14
      • 1970-01-01
      • 2023-01-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多