memset(C)之后将'\ n'保存在数组中

时间:2019-11-22 09:46:15

标签: c scanf memset

我读char直到'\ n',将它们转换为int并将这些数字求和,直到结果只有一位。

我不能使用mod或。

第一次运行顺利,但第二次继续运行,不等到\ n。

保留'\ n'的任何理由?

E/AndroidRuntime: FATAL EXCEPTION: main
    Process: accentra.in, PID: 4655
    java.lang.NullPointerException: Attempt to invoke virtual method 'void android.content.Context.startActivity(android.content.Intent)' on a null object reference
        at accentra.in.UserViewHolder$2.onClick(UserViewHolder.java:112)
        at android.view.View.performClick(View.java:6310)
        at android.view.View$PerformClick.run(View.java:24970)
        at android.os.Handler.handleCallback(Handler.java:794)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:176)
        at android.app.ActivityThread.main(ActivityThread.java:6662)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:547)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:873)
I/Process: Sending signal. PID: 4655 SIG: 9
Process 4655 terminated.

TIA

1 个答案:

答案 0 :(得分:1)

您的代码中有多个问题。其中一些是

  1. scanf("%s", &c);是错误的。 cchar,您必须为此使用%c转换说明符。

  2. 您从未检查过return value of scanf()调用以确保成功。

  3. 在扫描字符输入时,您没有清除任何现有输入的缓冲区。缓冲区中已经存在的任何现有字符,包括换行符('\n')将被视为%c的有效输入。在读取字符输入之前,需要清除缓冲区。