gpt4 book ai didi

c - 如何重复 Scanf 并替换值?

转载 作者:行者123 更新时间:2023-11-30 14:31:43 25 4
gpt4 key购买 nike

char *stack[13];
char INteger[100];
int top = -1;


int main () {
int current = 0;


while (current < 2) {

Yfunc();
printf("cell zero %s \n", stack[0]);
printf("cell one %s \n", stack[1]);


void Yfunc() {

printf("Please enter a string: \n");
scanf("%s", INteger);
push(INteger);

}
}

char *push(char input[]) {
top++;
stack[top] = input;
}

本质上,用户应该输入一个字符串,比如说“Cow”。然后将该字符串压入堆栈(这有效)。然而,当我第二次推送时,堆栈变得一团糟。我假设我不能多次 scanf(INteger) ?如果没有,有什么解决办法吗?

最佳答案

所以你的stack正在保存内存地址,但实际上并不复制内容。解决方案可能是这样的:

#include<stdio.h>
#include<string.h>

char stack[13][100];
char INteger[100];
int top = -1;

void push(char* input) {
memcpy(stack[++top], input, 100);
}

void Yfunc() {
printf("Please enter a string: \n");
scanf("%s", INteger);
push(INteger);
}

int main () {
int current = 0;

while (current++ <= 2) {
Yfunc();
printf("cell zero %s \n", stack[0]);
printf("cell one %s \n", stack[1]);
}
}

关于c - 如何重复 Scanf 并替换值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60178319/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com