为什么我不能在数组程序中使用空格?
Why can't I use a space in my array program?
如果我的输入是像"lsdhfjkhsdkjhfgkjhasd"这样的长名称,那么可以打印出来。但是,如果我在像"fsdaf-fdsaf-dsaf"这样的名称之间使用空格,那么它就不会显示。
int main () {
int total_hours;
char name[100],category[140],nic[140];
printf("Name:n");
scanf("%s",&name);
printf("NIC:n");
scanf("%s",&nic);
printf("category:n");
scanf("%s",&category);
printf("Total Hours:n");
scanf("%d",&total_hours);
printf("%s n %s n %s n %d n ",name,nic,category,total_hours);
getch();
}
您需要使用fgets,scanf以空白结尾。对于C++,您应该使用更高级别的构造。例如cin、cout-
示例
fgets(name, 100, stdin);
回答
#include <stdio.h>
int main () {
int total_hours;
char name[100],category[140],nic[140];
printf("Name:n");
fgets(name, 100, stdin);
printf("NIC:n");
fgets(category, 140, stdin);
printf("category:n");
fgets(nic, 140, stdin);
printf("Total Hours:n");
scanf("%d", &total_hours);
printf("%s n %s n %s n %d n ",name,nic,category,total_hours);
getch();
}
基本上是scanf将输入文本复制到数组中,不管它限制是scanf在遇到空白时停止。因此,您的第一个单词将被成功复制,但剩余部分将被丢弃。
你可以用"word1_word2"word1-word2"短语轻松测试。您将看到,第一个将被成功复制,但对于第二个,只有"word1"将被复制,因为scanf将在读取两个单词之间的第一个空格时停止。
printf("Name:n");
scanf("%s",name);
你必须如上所述重写它们。数组的名称是一个地址。因此,如果你想指向它,你应该使用name
而不是&name
。并且你想要得到一个字符数组。所以您必须使用"%s"
而不是"%c"
。
您正在接受一个接一个的char数组输入。当他获得空间分隔的输入时,它也将空间作为输入。检查以下代码:
#include<stdio.h>
int main () {
int total_hours;
char name[100],category[140],nic[140];
printf("Name:n");
gets(name);
printf("NIC:n");
gets(nic);
printf("category:n");
gets(category);
printf("Total Hours:n");
scanf("%d",&total_hours);
printf("%s n %s n %s n %d n ",name,nic,category,total_hours);
return 0;
}
注意:当您尝试使用"scanf"进行字符串/字符数组输入时,不应该有"&"。(例如scanf("%s",名称);)
相关文章:
- 用于拆分空格字符串的程序不起作用
- 如何在C++的凯撒密码程序中包含空格?
- 为什么EclipseCDT代码格式化程序有时会在模板参数中引入空格
- 解锈化代码格式化程序删除C++单行中的空格
- 崇高文本 3 - 在终端中编译并运行 C++ 程序(路径包含空格)
- 当使用e时没有空格时,奇怪的程序故障
- 在我的输入中没有空格的情况下,程序工作正常?C++
- 字符串中的空格是否会改变程序解释它的方式
- 使用包含给定空格的路径启动程序
- 我有n个空格,在每个空格中,我可以放置一个数字0到m.编写一个程序来输出所有可能的结果.需要帮助:)
- 为什么我不能在数组程序中使用空格?
- 如何从C++程序中删除多个空格,并放一个空格代替它
- 程序错误:用"%20"替换空格
- 当路径中有空格时,从与Qt应用程序相同的目录启动可执行文件
- 如何让我的程序分开而不是将输入之间的空格计算为整数
- C++ 用户定义的字符串需要包含空格(但程序不允许)
- Eclipse在运行调试器时破坏了带有空格字符的程序参数
- 如何在程序 c++ 结束时留出空格
- 当滥用词包含空格时,程序崩溃
- 如何在C++中随机生成的应用程序中在数字之间留出空格