c - 请告诉我为什么两张图片的输出不同?

标签 c string

该程序接受 5 个字符串并打印它们。 这是程序:-

#include"stdio.h"
#include"conio.h"
void main(){
    clrscr();
    char s[5];
    for(int i=0;i<5;i++){
        scanf("%s", s[i]);
    }
    for(i=0;i<5;i++){
        printf("\n\n%s", s[i]);
    }
    getch();
}

当我执行这个程序时,输出将是这样的

Click here to see the output of the program

但是当我以不同的方式输入字符串时,它会打印错误的输出

Click here to see the output of the program

最佳答案

您正在将字符串读入字符,或者更确切地说,您读取的字符串从 s 中的字符位置 i 开始。由于s非常短(当i为5时为空),会出现溢出,导致未定义的行为。

正如 Blue Pixy 在他的评论中提到的那样,您想要一个字符串数组,而不是字符数组,例如char s[5][32];

同时打开警告。第二个 for 循环中的 i 未定义。

关于c - 请告诉我为什么两张图片的输出不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45117841/

相关文章:

c - 我的 C 代码加泰罗尼亚数字不起作用(使用递归公式)

Java 将字符串拆分为 Pig Latin 翻译器的单个单词

c - 在C中的某个字符之后删除字符串的结尾

c# - 在一行代码中检查字符串是否为数字

c - 说真的,我的代码有什么问题

c - C程序中的字符串文字,可以在二进制中找到吗?

java - 任何使用大字符串并返回 InputStream 的实用程序类/方法?

c# - 如何在 C# 中从二维矩形字符数组的一行创建字符串?

c - Cocoa app 和 C 端 app 之间的进程间通信

c - 如何在 Arduino 串口打印对 AT 命令的响应?