这是我第一次使用这个网站以及学习c编程。 我试图编写一个代码,让用户输入一个句子并将代码打印出来。
我的尝试:
#include<stdio.h>
int main()
{
char array[1000];
printf("Please enter a phrase: ");
int index = 0;
while(array[index]!= '\0')
{
scanf("%c",&array[index]);
++index;
}
index = 0;
while(array[index]!= '\n')
{
printf("%c",array[index]);
++index;
}
}
我无法找到导致此代码失效的原因。
答案 0 :(得分:0)
您也可以使用您的概念获得预期的输出。尝试使用以下代码。
#include<stdio.h>
int main()
{
char array[1000];
printf("Please enter a phrase: ");
int index =0;
scanf("%c",&array[index]);
while(array[index]!='\n')
{
scanf("%c",&array[++index]);
}
index=0;
while(array[index]!= '\n')
{
printf("%c",array[index]);
++index;
}
printf("\n");
}
答案 1 :(得分:0)
好的,首先,您需要初始化所有阵列。如果你不这样做,用户输入会打印出许多毫无意义的垃圾。
其次,第一个while循环的测试部分检查一个永远不存在的空字符,因为&#34; array []&#34;它只是一个简单的字符数组(不是字符串),因此,对scanf()的调用不会在末尾插入空字符。这会导致无限循环。
第三,你的第一个while循环应该是do-while,这样你首先阅读一个角色,然后测试角色,否则如果&#34; index&#34;首先是变量增量...
最后,我发布了用于使用您选择的方法运行的代码。但是,作为您选择的方法的替代方法,c标准库具有gets()函数,它允许您读取整行输入并返回输入的字符串(实际上它返回指向创建的字符数组的指针但是我认为你抓住我的漂移),puts()函数打印一个用作参数的指针所指向的字符串。 有关此问题的更多信息,包括gets()和puts(),请参阅&#34; C编程现代方法&#34;由K.N.国王,第13章:弦乐。我希望这会有所帮助。
快乐编码!! :)
#include <stdio.h>
int main()
{
int index = 0;
char array[1000];
while(index < 1000){
array[index] = '0';
index++;
}
printf("Please enter a phrase: ");
index = 0;
do {
scanf("%c", &array[index]);
} while(array[index] != '\n' && index++ < 1000);
index = 0;
while(index < 1000)
printf("%c", array[index++]);
}
答案 2 :(得分:-1)
我认为你在寻找这个:
#include<stdio.h>
int main() {
char array[1000];
printf("Please enter a phrase: ");
scanf ("%[^\n]%*c", array);
printf("\n%s", array);
return 0;
}