【问题标题】:I want to print all the input of this string in for loop but it only prints the last input我想在 for 循环中打印这个字符串的所有输入,但它只打印最后一个输入
【发布时间】:2021-09-04 22:41:26
【问题描述】:

帮我更正这段代码.... 我不知道我应该提供哪些额外的细节,所以它让我发布

#include<stdio.h>

int main(){
    char s[34];
    int  a = 4;
    for (int i = 0; i < a; i++)
    {
        printf("Student %d enter your name: ", i+1);
        scanf("%s", s);
    }

   for (int i = 0; i < a; i++)
    {
        printf("Student %d name is %s\n", i+1, s);
    } 
    
    
    return 0;
}

【问题讨论】:

  • 你只有一个 s 变量,所以你只能有一个值。也许你需要一个字符串数组:char s[4][34]; 并在每个循环中读/写s[i]

标签: arrays c string for-loop printf


【解决方案1】:

您正在覆盖同一块内存:scanf("%s", s);

您应该将s 作为指向char 的指针数组,即char *s[4],在这种情况下,您应该使用malloc 为每个名称分配空间,然后使用free 将所有分配的内存归还给操作系统。

或者,您可以将s 声明为char s[4][34],并在您的scanfprintf 语句中使用s[i]

【讨论】:

    猜你喜欢
    • 2021-07-03
    • 2012-03-18
    • 1970-01-01
    • 2019-06-04
    • 2021-01-30
    • 2022-01-23
    • 2011-05-18
    • 2022-01-24
    • 1970-01-01
    相关资源
    最近更新 更多