如何解决为什么我的代码不能读取“for”中的所有字符串?
如果我运行此代码并为 n(从键盘读取的句子数)选择 3,它将只允许我阅读其中的两个。我做错了什么?
01-10 02:37:11.063 565 637 I DropBoxManagerService: add tag=event_data isTagEnabled=true flags=0x2
01-10 02:37:11.066 565 608 W BroadcastQueue: Background execution not allowed: receiving Intent { act=android.intent.action.DROPBOX_ENTRY_ADDED flg=0x10 (has extras) } to com.google.android.gms/.stats.service.DropBoxEntryAddedReceiver
01-10 02:37:11.066 565 608 W BroadcastQueue: Background execution not allowed: receiving Intent { act=android.intent.action.DROPBOX_ENTRY_ADDED flg=0x10 (has extras) } to com.google.android.gms/.chimera.GmsIntentOperationService$PersistentTrustedReceiver
01-10 02:37:11.103 7038 8988 I NetworkScheduler.Stats: Task com.google.android.gms/com.google.android.gms.checkin.EventLogService finished executing. cause:2 result: 1 elapsed_millis: 177 uptime_millis: 177 exec_start_elapsed_seconds: 12769 [CONTEXT service_id=218 ]
01-10 02:37:12.895 565 608 W BroadcastQueue: Background execution not allowed: receiving Intent { act=android.intent.action.DROPBOX_ENTRY_ADDED flg=0x10 (has extras) } to com.google.android.gms/.stats.service.DropBoxEntryAddedReceiver
01-10 02:37:12.895 565 608 W BroadcastQueue: Background execution not allowed: receiving Intent { act=android.intent.action.DROPBOX_ENTRY_ADDED flg=0x10 (has extras) } to com.google.android.gms/.chimera.GmsIntentOperationService$PersistentTrustedReceiver
01-10 02:37:20.885 565 599 E JobScheduler.Background: App com.google.android.gms became active but still in NEVER bucket
01-10 02:37:20.887 565 608 I DropBoxManagerService: add tag=system_server_wtf isTagEnabled=true flags=0x2
01-10 02:37:22.895 565 608 W BroadcastQueue: Background execution not allowed: receiving Intent { act=android.intent.action.DROPBOX_ENTRY_ADDED flg=0x10 (has extras) } to com.google.android.gms/.stats.service.DropBoxEntryAddedReceiver
01-10 02:37:22.895 565 608 W BroadcastQueue: Background execution not allowed: receiving Intent { act=android.intent.action.DROPBOX_ENTRY_ADDED flg=0x10 (has extras) } to com.google.android.gms/.chimera.GmsIntentOperationService$PersistentTrustedReceiver
01-10 02:37:26.085 266 25461 E android.system.suspend@1.0-service: Error opening kernel wakelock stats for: wakeup34: Permission denied
01-10 02:37:26.079 266 266 W Binder:266_3: type=1400 audit(0.0:10881): avc: denied { read } for name="wakeup34" dev="sysfs" ino=17466 scontext=u:r:system_suspend:s0 tcontext=u:object_r:sysfs:s0 tclass=dir permissive=0
01-10 02:37:26.091 266 25461 E android.system.suspend@1.0-service: Error opening kernel wakelock stats for: wakeup35: Permission denied
01-10 02:37:26.087 266 266 W Binder:266_3: type=1400 audit(0.0:10882): avc: denied { read } for name="wakeup35" dev="sysfs" ino=17526 scontext=u:r:system_suspend:s0 tcontext=u:object_r:sysfs:s0 tclass=dir permissive=0
01-10 02:37:38.154 435 435 E netmgr : qemu_pipe_open_ns:62: Could not connect to the 'pipe:qemud:network' service: Invalid argument
01-10 02:37:38.154 435 435 E netmgr : Failed to open QEMU pipe 'qemud:network': Invalid argument
01-10 02:37:38.538 438 438 E wifi_forwarder: qemu_pipe_open_ns:62: Could not connect to the 'pipe:qemud:wififorward' service: Invalid argument
01-10 02:37:38.538 438 438 E wifi_forwarder: RemoteConnection failed to initialize: RemoteConnection failed to open pipe
01-10 02:38:13.546 565 565 D CompatibilityChangeReporter: Compat change id reported: 135634846; UID 10115; state: DISABLED
01-10 02:38:13.546 565 609 D CompatibilityChangeReporter: Compat change id reported: 143937733; UID 10115; state: DISABLED
01-10 02:38:13.569 565 1750 D WifiNl80211Manager: Scan result ready event
01-10 02:38:13.569 565 1750 D WifiNative: Scan result ready event
01-10 02:38:13.577 357 357 D Zygote : Forked child process 13230
01-10 02:38:13.584 565 609 I ActivityManager: Start proc 13230:com.google.android.videos/u0a115 for service {com.google.android.videos/androidx.work.impl.background.systemjob.SystemJobService}
01-10 02:38:13.599 13230 13230 W .android.video: Unexpected CPU variant for X86 using defaults: x86
01-10 02:38:13.615 13230 13230 E .android.video: Not starting debugger since process cannot load the jdwp agent.
01-10 02:38:13.656 13230 13230 D ApplicationLoaders: Returning zygote-cached class loader: /system/framework/android.test.base.jar
01-10 02:38:13.659 13230 13230 I .android.video: The ClassLoaderContext is a special shared library.
01-10 02:38:13.674 13230 13230 I .android.video: The ClassLoaderContext is a special shared library.
01-10 02:38:13.706 13230 13230 D NetworkSecurityConfig: No Network Security Config specified,using platform default
01-10 02:38:13.707 13230 13230 D NetworkSecurityConfig: No Network Security Config specified,using platform default
01-10 02:38:13.869 13230 13230 I TetheringManager: registerTetheringEventCallback:com.google.android.videos
01-10 02:38:14.007 13230 13266 W PlayMovies: esk.run:3 User config found
解决方法
您在读取 n 后忘记取出输入中留下的 '\n'
。
您可以将 scanf 更改为:scanf("%d\n",&n);
或在其后添加 getchar();
。
此外,如评论中所述,您在每个数组中分配一个字符。您应该将结果 sizeof
乘以您想要的字母数 + 1(记住 \0
。)
*(x + i) = (char*)malloc(sizeof(char) * DESIRED_LENGTH);
最后...你还应该释放所有的指针(在释放 x 之前),否则你会出现内存泄漏:
for (int i = 0; i < n; i++)
free(*(x + i));
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。