c - 在 printf 中显示字符串而不是数字 (C)

标签 c string int switch-statement printf

我用 C 编写了这段代码,仅在特定数字上显示一条消息

int main(void) {
int a, d;    
d = scanf("%d", &a);
switch(a){
    case 1:
        printf("ml' nob:\n%d\nQapla'\nnoH QapmeH wo' Qaw'lu'chugh yay chavbe'lu' 'ej wo' choqmeH may' DoHlu'chugh lujbe'lu'.\n", a);
        break;
    case 2:
        printf("ml' nob:\n%d\nQapla'\nQu' buSHa'chugh SuvwI', batlhHa' vangchugh, qoj matlhHa'chugh, pagh ghaH SuvwI''e'.\n",a);
        break;
    case 3:
        printf("ml' nob:\n%d\nQapla'\nqaStaHvIS wa' ram loS SaD Hugh SIjlaH qetbogh loD.\n",a);
        break;
    case 4:
        printf("ml' nob:\n%d\nQapla'\nHa'DIbaH DaSop 'e' DaHechbe'chugh yIHoHQo'.\n",a);
        break;
    case 5:
        printf("ml' nob:\n%d\nQapla'\nleghlaHchu'be'chugh mIn lo'laHbe' taj jej.\n",a);
        break;
    default:
        printf("ml' nob:\n%d\nluj\n", a);
        break;
}
return 0;}

但是当我在输入中输入字符串或字符时,它会给我很多无意义的数字。有没有办法显示我默认输入的字符串而不是数字。

编辑: 输入

abc

输出

What i want : abc
What it shows: 3469312

最佳答案

试试这个..!

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

#include <stdio.h>
using namespace std;
int main(void) {
    int a, d;
    char str[10];
    scanf("%s", &str);

    char* err = NULL;
    a = strtol(str, &err,10);
    if (err==NULL)  //Conversion Error
        a = -1;

    switch((int)a){
    case 1:
        printf("ml' nob:\n%d\nQapla'\nnoH QapmeH wo' Qaw'lu'chugh yay chavbe'lu' 'ej wo' choqmeH may' DoHlu'chugh lujbe'lu'.\n", a);
        break;
    case 2:
        printf("ml' nob:\n%d\nQapla'\nQu' buSHa'chugh SuvwI', batlhHa' vangchugh, qoj matlhHa'chugh, pagh ghaH SuvwI''e'.\n",a);
        break;
    case 3:
        printf("ml' nob:\n%d\nQapla'\nqaStaHvIS wa' ram loS SaD Hugh SIjlaH qetbogh loD.\n",a);
        break;
    case 4:
        printf("ml' nob:\n%d\nQapla'\nHa'DIbaH DaSop 'e' DaHechbe'chugh yIHoHQo'.\n",a);
        break;
    case 5:
        printf("ml' nob:\n%d\nQapla'\nleghlaHchu'be'chugh mIn lo'laHbe' taj jej.\n",a);
        break;
    default:
        printf("ml' nob:\n%s\nluj\n", str);
        break;
    }
    return 0;}

关于c - 在 printf 中显示字符串而不是数字 (C),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40057352/

相关文章:

c - 将 N^(n*n) 矩阵存储在 C 中

C99 的固定宽度整数类型

c++检测用户是否输入了字符串而不是Int

c - 在 B 树中查找第 k 个键的算法?

c - 释放包含动态缓冲区的动态缓冲区中的内存

编译器将 printf 更改为 puts

c++ - 为什么字符串文字上的 decltype 不产生数组类型?

检查字符串是否改变

java - com.sun.org.apache.xpath.internal.operations.String 的用途是什么?

c++ - 我需要删除析构函数中的基本数据类型吗? C++