gpt4 book ai didi

c - printf 显示错误的输出,行尾有奇怪的问号 [C]

转载 作者:行者123 更新时间:2023-11-30 20:09:08 26 4
gpt4 key购买 nike

此代码尝试执行队列,但该队列有两个字段:数字和单词。我的问题是字段“word”打印不正确(字段“number”很好)

预期输出:

22ABC

12EFG

654xyz

不幸的是输出看起来像这样

https://ibb.co/gjF446F

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

#define MAX_capacity 1000
#define Max_len_napis 100


typedef struct{
int number;
char word[];

} data;

data intArray[MAX_capacity];
int peak = 0;
int rear = -1;
int itemCount = 0;

int front() {
return intArray[peak].number;
}

bool isEmpty() {
return itemCount == 0;
}

bool isFull() {
return itemCount == MAX_capacity;
}

int size() {
return itemCount;
}

void insert(data x) {

if(!isFull()) {

if(rear == MAX_capacity-1) {
rear = -1;
}

int indeks = ++rear;
intArray[indeks].number = x.number;
strcpy (intArray[indeks].word, x.word);

itemCount++;
}
}


data remove() {
data dat = intArray[peak++];

if(peak == MAX_capacity) {
peak = 0;
}

itemCount--;
return dat;
}


void print(int N){


for(int i=0;i<N;i++){
data n = remove();
printf("%d\n",n.number);
printf("%s\n",n.word); // that's line doesn't work correctly




}



}


int main() {
data tab[3];

tab[0].number = 22;
strcpy (tab[0].word, "abc");
insert(tab[0]);

tab[1].number = 12;
strcpy (tab[1].word, "efg");
insert(tab[1]);

tab[2].number = 654;
strcpy (tab[2].word, "xyz");
insert(tab[2]);



int siz = size();
print(siz);





return 0;



}

我认为 printf("%s\n",n.word) 无法正常工作。但如果我不使用结构,一切正常。

最佳答案

您需要为单词分配内存。例如这样:

typedef struct{
int number;
char word[100];

} data;

更好的方法是动态地为单词分配内存。

关于c - printf 显示错误的输出,行尾有奇怪的问号 [C],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53884071/

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