C语言编程 printf

标签 c printf

我必须打印两个不同的字符串,但它崩溃了! 所以,我认为我刚刚在编程方面失败了,但我是新人,我不知道是什么!这是代码:

#include <stdio.h>
#include <conio.h>

int main(void)
{
    char nome1,nome2;
    int num1,num2;
    printf("inserisci il nome del primo giocatore ");
    scanf("%s",&nome1);
    printf("inserisci il nome del secondo giocatore ");
    scanf("%s",&nome2);
    printf("i giocatori sono: %s,%s", nome1,nome2 );
    getch();
    return 0;
}

最佳答案

您需要为您定义的变量nome1nome2分配一些存储

所以,不要这样说:

char nome1,nome2;

为这些变量分配一些内存

char nome1[100],nome2[100];

此外,为了防止缓冲区溢出,请使用 fgets而不是 scanf:

fgets(nome1, 100, stdin);

所以,你的代码是这样的:

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

int main(void)
{
    char nome1[100],nome2[100];
    int num1,num2;
    printf("inserisci il nome del primo giocatore ");
    fgets(nome1, 100, stdin);
    printf("inserisci il nome del secondo giocatore ");
    fgets(nome2, 100, stdin);
    strtok(nome1, "\n");    //removing the newline.
    printf("i giocatori sono: %s,%s", nome1,nome2 );
    getch();
    return 0;
}

关于C语言编程 printf,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39708576/

相关文章:

c - 在 C 中返回数组而不是 switch 语句、嵌套值集

c - C 逐个字符读取文件并比较这些字符

C 参数不起作用?

c - 如何将函数传递给 fprintf

javascript - JavaScript 的 sprintf() 的行为类似于 Python 的格式 (%)?

c++ - 模拟基数/底数为 36 的 ulltoa()

c - OpenMP 如何将循环划分为线程?

c - 如何以可移植的方式创建流程?

printf - 如何处理传递的 sh var 中带空格的多个参数?

c - 如何使用 GDB(或其他程序)获得堆栈的总体概述?