C和Java中的字符
我一直在用C语言尝试一件事:C和Java中的字符,java,c,Java,C,我一直在用C语言尝试一件事: int main(){ char ch; printf("Enter the character"); scanf(" %c",&ch); printf("The entered character is %c\n",ch); return 0; } 一切似乎都很好,只要我在输入端输入两个字符,它就会去掉第一个字符。例如,如果我输入“as”,它将在ch中给我一个“a”。为什么会这样?如果我输入多个字符,谁能告诉我我想给一个
int main(){
char ch;
printf("Enter the character");
scanf(" %c",&ch);
printf("The entered character is %c\n",ch);
return 0;
}
一切似乎都很好,只要我在输入端输入两个字符,它就会去掉第一个字符。例如,如果我输入“as”,它将在ch中给我一个“a”。为什么会这样?如果我输入多个字符,谁能告诉我我想给一个错误。我该怎么做?先谢谢你
如果可能的话,我想在Java中做同样的事情。在使用“%C”格式化程序的C中,一次只能打印一个字符,如果要读取任何内容,必须创建一个字符指针,调用malloc函数并使用“%s”格式化程序读取。
例如:
包括
包括
包括
int main(){
char*ch=malloc(100*sizeof(char));
如果(ch!=NULL){
printf(“输入字符串”);
扫描频率(“%99s”,ch)
printf(“输入的字符串是%s\n”,ch);
免费(ch);
}
其他的
printf(“Malloc失败!”);
返回0;
}
就C而言:请按以下方式修改代码,编译并运行它,您将看到一个不言自明的答案:无论您依次键入多少个字符,它们都会累积在stdin
缓冲区中,但一次(或一次)只会将第一个字符读入程序,由于%c
格式说明符和目标变量ch
#include <stdio.h>
int main(){
char ch;
printf("Eneter the character:\n");
while(scanf(" %c",&ch) != EOF){
printf("The entered character is %c\n",ch);
}
return 0;
}
#包括
int main(){
char ch;
printf(“输入字符:\n”);
while(scanf(“%c”,&ch)!=EOF){
printf(“输入的字符是%c\n”,ch);
}
返回0;
}
要结束程序执行,您应该输入
EOF
(control-D)。在java中,您可以这样做
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
try {
String str = sc.next();
if (str.length() > 1)
System.out.println("Length exceeded");
else
System.out.println("Char: " + str);
} catch (Exception e) {
} finally {
sc.close();
}
}
}
读取所有输入,计算其长度,如果错误则返回错误。您读入一个字符,然后您会惊讶地发现您得到了一个字符?真奇怪……对不起,stackoverflow不是一种您删除需求而其他人为您删除代码的服务。请在中搜索
Scanner
Java@J我不是在找服务。我试了又试,但找不到。它被称为必需的帮助,这就是堆栈溢出的目的。不管怎样,这是我自己做的提示,这是需要帮助的。请检查malloc
return和free
themalloc
ated memory…同时,不要在C中使用malloc
。此外,在未指定长度限制的情况下,不要使用scanf(“%s”)
。使用例如scanf(“%99s”)
。谢谢大家,我已经编辑了。很抱歉,我误读了标准。:/我读取了错误函数的规则。@2501否,它可以返回EOF或匹配项的数目。如果在任何转换之前出现输入失败,scanf函数将返回宏EOF的值。否则,scanf函数将返回分配的输入项的数量,如果早期匹配失败,该数量可能会小于规定数量,甚至为零在%c
的情况下,我相信这意味着上面答案中的代码很好,因为它不能不匹配。
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
try {
String str = sc.next();
if (str.length() > 1)
System.out.println("Length exceeded");
else
System.out.println("Char: " + str);
} catch (Exception e) {
} finally {
sc.close();
}
}
}