无法使用扫描读取特殊字符



我正在构建一个系统,我需要一个字符内部的结构来接收一个名称和2个值,但是当我看到结果时,名称总是从一个特殊字符断开。

#define NOMINMAX
#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
typedef struct
{
float preco;
int quant;
char* prod[50];

} info;
void imprime(info j)
{
printf("||  Produto: %s  ||  preço: %.2f  ||  quantidade: %d  ||n", j.prod, j.preco, j.quant);
}
int main()
{
SetConsoleCP(CP_UTF8);
SetConsoleOutputCP(CP_UTF8);
system("color 0F");

info lojas[50];

for (int x = 0; x < 1; x++)
{
printf("Digite o nome do produto: ");
scanf(" %[^n]s", &lojas[x].prod);
printf("nDigite o preço do produto: ");
scanf(" %f", &lojas[x].preco);
printf("nDigite a quantidade desejada do produto: ");
scanf(" %d", &lojas[x].quant);
system("cls");
}

for (int x = 0; x < 1; x++)
{
imprime(lojas[x]);
}   
}

输入:

Digite o nome do produto: Açucar
Digite o preço do produto: 1
Digite a quantidade desejada do produto: 1
预期输出:

||  Produto: Açucar  ||  preço: 1.00  ||  quantidade: 1  ||

收到结果

||  Produto: A  ||  preço: 1.00  ||  quantidade: 1  ||

我认为问题可能在以下几行:

SetConsoleCP(CP_UTF8);
SetConsoleOutputCP(CP_UTF8);

没有,代码可以工作,但是printf中的特殊字符停止工作。我已经尝试使用但由于我不知道的原因,它在我的编译器中不起作用

我使用embarcadeiro dev-c++

嗨,这是因为在C语言中,您应该使用其他函数(如gets())扫描字符串。

如果你需要添加库但一个例子是:

int main () {
char str[50];
printf("Inster a string: ");
gets(str);
printf("The string is: %s",str);
return(0);
}

我建议您添加因为它更容易创建更多的函数

回见

最新更新